#!/usr/local/bin/perl #Programa de busca de casamento de padrao em perl com uso de expressoes regulares print "\nEscolha a opcão de busca e a palavra a ser buscada(passagem por argumento)\n\n"; print "0 - Busca exata\n"; print "1 - Busca aproximada\n\n"; print "Exemplo: perl [programa] [tipo de busca] [palavra]\n\n"; foreach $argument(@ARGV){ #carrega um argumento por vez para a variavel $argument push(@arguments,$argument); #adiciona o argumento ao array @arguments } if ($arguments[0] == '0'){ #Testa o primeiro argumento, se '0' entao busca exata! if (/\D$arguments[1]\D/) {#testa se os caracteres digitados são letras print "Digite caracteres de palavra (a-z, A-Z)"; } $palavra = $arguments[1];#a palavra é recuperada o array $linha_numero = 0;#linha da ocorrencia da palavra $achei = 0; #se ocorrencia da palavra open( ARQUIVO, "texto.txt" ) || die "Erro ao abrir arquivo texto.txt\n"; #abre o arquivo que sera lido while ( $linha = ) { #laço que carrega as linhas do arquivo ++$linha_numero;#variavel que guarda a linha que esta sendo lida if ( $linha =~ /\b$palavra\b/ ) { #testa se a palavra esta na linha referenciada print "Linha:".$linha_numero."\n";#imprime a linha caso tenha encontrado a palavra $achei = 1; #seta achei indicando que pelo menos uma ocorrencia da palavra foi encontrada } } close ( ARQUIVO ); #fecha o arquivo if ($achei == 0){ #testa se achei foi setado print "Não foi encontrado nenhuma ocorrência da palavra: ".$palavra."\n\n"; } } else { #Busca aproximada! if (/\D$arguments[1]\D/) {#testa se os caracteres digitados são letras print "Digite caracteres de palavra (a-z, A-Z)"; } $palavra = $arguments[1];#a palavra é recuperada o array $linha_palavra = 0;#linha da ocorrencia da palavra $achei = 0; #se ocorrencia da palavra open( ARQUIVO, "texto.txt" ) || die "Erro ao abrir arquivo texto.txt\n"; #abre o arquivo que sera lido while ( $linha = ) { #laço que carrega as linhas do arquivo ++$linha_palavra;#variavel que guarda a linha que esta sendo lida if (( $linha =~ /$palavra/ ) || ($linhaMaus =~/$palavra/) || ($linhaMin =~/$palavra/)){ #testa se a palavra esta na linha referenciada print "Linha:".$linha_numero."\n";#imprime a linha caso tenha encontrado a palavra $achei = 1; #seta achei indicando que pelo menos uma ocorrencia da palavra foi encontrada } } close ( ARQUIVO ); #fecha o arquivo if ($achei == 0){ #testa se achei foi setado print "Não foi encontrado nenhuma ocorrência da palavra: ".$palavra."\n\n"; } }