[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