in reply to Please Explain Code

my ($fin, $dt, $vard );Declares scalar variables. See my and perldata.
my %anc = ();
Declares a hash variable. See perldata.
my %cnt = ();
See line 2.
my @myfiles =();
Declares an array. See perldata.
my @all = ();
See line 4.Empty line. Has no effect.
@myfiles=<A*> or die "No files to open A\* for reading. $!";
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.
foreach $fin (@myfiles) {
Beginning of a loop. See perlsyn.
##my $fin="A20100222.1700-1715_GWLD1E_1.xml";
Comment. Has no effect.
open INP, "$fin" or die "Cannot open $fin for read :$!";
Opens a file for reading, if it's possible. See open.
$fin =~ (/^A(\d{8}).(\d{4})/);
Matches the file name against a regular expression. See perlre and perlop.
my $dt = "$1" . ":" . "$2";
Dot is the concatenation operator.
#print "$dt\n";
Comment.
while (<INP>) {
Another loop.
if (/^<moid>.*=(\d+)</) {
Condition.
$anc{$1} += 1;
See perlop.
}
elsif (/^<mt>(.+)</) {
If the first condition was not true, try this one.
$cnt{$1} += 1;
}
elsif (/^<\/md>$/) {
last;
Exit the innermost loop.
}
End of the loop.
}
See the previous line.
close (INP);
Close the filehandle.
}
open(OUT, ">>all_announc_cnt.txt") or die "Cannot open all_announc_cnt +.txt file for writting :$!";
Open a file for writing (appending).
foreach $vard (sort {$a <=> $b} (keys(%anc))) {
See sort, keys.
print OUT "$vard:$anc{$vard}\n";
See print.
}
print OUT "\n";
foreach $vard (sort (keys(%cnt))) {
print OUT "$vard:$cnt{$vard}\n";
#push (@all, "$vard:$anc{$vard}");
}
close (OUT);

Replies are listed 'Best First'.
Re^2: Please Explain Code
by pat_mc (Pilgrim) on Sep 22, 2011 at 15:34 UTC
    I admire your patience ...