Converting the steps from a shell pipeline to Perl is fairly easy. The steps are:
- grep Acct: Facs_Data.txt - Read a file line by line and select the lines matching Acct:
- cut -d":" -f2 - Take the side to the right of : of the line
- cut -d" " -f1 - take the side to the left of the blank of the line
If we convert each step to Perl, we get the following parts:
my $filename = 'Facs_Data.txt';
open my $fh, '<', $filename
or die "Couldn't open '$filename': $!";
my @lines = grep { /Acct:/ } <$fh>; # Read a file line by line and sel
+ect the lines matching Acct:
-
@lines = map { [ split $_, /:/ ]->[1] } @lines; # Take the side to the
+ right of : of the line
@lines = map { [ split $_, /:/ ]->[0] } @lines; # take the side to the
+ left of the blank of the line
But a more perlish approach would be to do all that in one go:
my $filename = 'Facs_Data.txt';
open my $fh, '<', $filename
or die "Couldn't open '$filename': $!";
my @lines = map { /:([^\s]+)/ ? $1 : () } # take the stuff between th
+e : and the first blank
grep { /Acct:/ } <$fh>; # Read a file line by line and sel
+ect the lines matching Acct:
# do whatever with the values in @lines
print "$_\n" for @lines;
Update:: Fixed missing = in step three, spotted by AnomalousMonk, thanks. |