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);
|