[Cascavel-pm] Comparacao de strings

Donato Azevedo donatoaz em gmail.com
Terça Março 29 12:40:46 PST 2005


Olá monges,
Eu estou fazendo um script para ver aonde metodos de uma classe sao
chamados em algumas paginas ASP e gostaria de saber o seguinte:
o que é melhor:
for $method_name (@method_names) {
    abrir todas as paginas uma a uma e comparar cada linha com $method_name
}

OU

for $page_name (@page_names) {
    abrir a pagina;
    pegar uma linha;
    for $method_name (@method_names) {
        comparar $method_name com a linha;
    }
}


aqui esta o script que pega as paginas e o nome dos metodos:
#!/usr/bin/perl

use warnings;
use strict;

use Data::Dumper;

$|=1;
#my %hash;
#my %hash2;
#my %exthash;
my @array;

my @dirs = (
'D:\Projetos\MKP\CamadaNegocios',
'D:\Projetos\MKP\eBB'
);

my (@page, em bu, em pagecomp);

for my $dirloop (@dirs) {
	opendir(DIR, $dirloop) or die "couldn't opendir '$dirloop': $!";
	for (readdir DIR) {
		push(@page, $dirloop . "\\" . $_) if /\.asp$/;
		if (/(?:^|\\)([^\.]+)\.asp/) {
			push(@pagecomp, $1);
			#print $1,"\n";
		}
		push(@bu, $dirloop . "\\" . $_) if /^bu.+\.cls$/;
		push(@bu, $dirloop . "\\" . $_) if /^Lib.+\.bas$/i;
		closedir DIR;
	}
}

	for my $bufile (@bu) {
		$proc++;
		$bufile =~ /(?:^|\\)((?:bu|Lib)[^\.]+)\.(?:cls|bas)/i;
		print $bufile,"\n";
		my $bu = $1;
		print "\r";
		print " " x 70;
		print "\rprocessing $bu ($proc/".scalar @bu.")...\n";
		open ORIG, $bufile or die $!;
		my $line = 0;
		while (<ORIG>) {
			my $funcname;
			$line++;
			if (/[\s\t]*(Private|Public)[\s\t]+(Function|Sub)[\s\t]+([^\s\t\(]+)/i) {
				print "Function: $3\n";
				$funcname = $3;
				push(@array,"$bu.$funcname");
				next;
			}
			s/[\s\t]//g;		#Remove all whitespaces and tabs
		}
		close ORIG;
		#for my $funcname (@{$hash{$bu}) {
			
		#}
	}


open(DUMP, ">cleandump.txt");
$Data::Dumper::Varname = "HASH";
print DUMP Dumper(\@array);
close DUMP;

-- 
*******************************************
              Donato Azevedo
Engenharia de Controle e Automação
                      UFMG
*******************************************


Mais detalhes sobre a lista de discussão Cascavel-pm