Declares a hash variable. See perldata.my %anc = ();
See line 2.my %cnt = ();
Declares an array. See perldata.my @myfiles =();
See line 4.Empty line. Has no effect.my @all = ();
Search for files whose names start with A. If there are any, store the names to the array, if not, stop the program and complain.Empty line.@myfiles=<A*> or die "No files to open A\* for reading. $!";
Beginning of a loop. See perlsyn.foreach $fin (@myfiles) {
Comment. Has no effect.##my $fin="A20100222.1700-1715_GWLD1E_1.xml";
Opens a file for reading, if it's possible. See open.open INP, "$fin" or die "Cannot open $fin for read :$!";
Matches the file name against a regular expression. See perlre and perlop.$fin =~ (/^A(\d{8}).(\d{4})/);
Dot is the concatenation operator.my $dt = "$1" . ":" . "$2";
Comment.#print "$dt\n";
Another loop.while (<INP>) {
Condition.if (/^<moid>.*=(\d+)</) {
See perlop.$anc{$1} += 1;
}
If the first condition was not true, try this one.elsif (/^<mt>(.+)</) {
$cnt{$1} += 1;
}
elsif (/^<\/md>$/) {
Exit the innermost loop.last;
End of the loop.}
See the previous line.}
Close the filehandle.close (INP);
}
Open a file for writing (appending).open(OUT, ">>all_announc_cnt.txt") or die "Cannot open all_announc_cnt +.txt file for writting :$!";
See sort, keys.foreach $vard (sort {$a <=> $b} (keys(%anc))) {
See print.print OUT "$vard:$anc{$vard}\n";
}
print OUT "\n";
foreach $vard (sort (keys(%cnt))) {
print OUT "$vard:$cnt{$vard}\n";
#push (@all, "$vard:$anc{$vard}");
}
close (OUT);
In reply to Re: Please Explain Code
by choroba
in thread Please Explain Code
by costas1
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |