I have the following output, and each value that is separated by comma is
a variable:
servera,serverb,109,aix4-r1,server servera,serverb,109,aix4-r1,server servera,serverb,109,aix4-r1,server servera,serverb,109,aix4-r1,server servera,serverb,109,aix4-r1,server servera,serverb,109,hpux10,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server servera,serverb,109,solaris2,server
I am trying to set up a counter that would actually output the data to be:
servera,serverb,109,aix4-r1,server,5 servera,serverb,109,hpux10,server,1 servera,serverb,109,solaris2,server,10
Does anyone any suggestion on how to set up a counter to count the lines
until a different line shows up. I already have the list sorted, so I
just need to compare the new string to old string and if they are the same
increase the counter, and if they are different start a new counter.
How about something like this (untested code):
#!/usr/bin/perl
use strict; use warnings;
my($last, $counter) = (undef, 0);
while (<>) { # call with: perl script_name FILE(S) TO COUNT > OUTPUT_FILE
chomp;
if ($last) {
if ($_ eq $last) { $counter++; }
else {
print "$last,$counter\n";
undef $last;
$counter = 0;
}
}
else {
$last = $_;
$counter++;
}
}
__END__
James
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>