[Boulder.pm] Newbie File Manipulation question
Jeff Stampes
jeff.stampes at xilinx.com
Mon Jul 17 10:43:21 PDT 2006
Rod Burgess wrote:
> I am new to the Perl world and am trying to learn it. A coworker tells me
> that Perl will not work for what I am trying to do
Hopefully your coworker has other fields of expertise that they *are*
qualified to address.
> however, I think Perl
> would be a great tool to use and I feel this coworker is wrong.
>
You are correct. In fact, the stunning thing about your coworker's
comments is that this sort of work is what perl excels at!
> I have a file that contains several lines all as below:
> DR03555{tab} 45600062888{tab} 00008FLAT WASHER
> DR03555{tab} 228765329{tab} 00001GASKET
>
> The meaning of the file is
> DR03555 = order number
> 45600062888 = part number
> 00008 = quantity
> FLAT WASHER = Description
>
> The lines all begin with the prefex DR I would like to read this file and
> produce the following output:
>
> 45600062888;8;FLAT WASHER
> 228765329;1;GASKET
>
> basiclly I need a file that lists the following: Part#;Quantity;Description
>
> Is this possible with Perl?
>
In many, many ways! Here's one:
#!/usr/bin/perl
use warnings;
use strict;
while ( my $orderData = <DATA> ) {
chomp $orderData;
my ($quantity, $description );
my ($orderNumber, $partNumber, $other ) = split /\t/, $orderData;
if ( $other =~ /^(\d{5})(.+)$/ ) {
($quantity, $description) = ( $1, $2 );
} else {
die "Bad quantity/description data found\n";
}
print "$partNumber;$quantity;$description\n";
}
__DATA__
DR03555 45600062888 00008FLAT WASHER
DR03555 228765329 00001GASKET
More information about the Boulder-pm
mailing list