rpinnam has asked for the wisdom of the Perl Monks concerning the following question:
I want my output to be :IFB Northpole||| Alaska||| 907-555-5555 Walmart||| Fairbanks||| Alaska Chicken||| Anchorage||| Alaska||| 907-555-5555 Beef||| Somewhere|||||Over the Rainbow|||907-555-5555
Here is my code :IFB Northpole| Alaska| 907-555-5555| Walmart| Fairbanks| Alaska Chicken| Anchorage| Alaska| 907-555-5555 Beef| Somewhere|Over the Rainbow|907-555-5555
How can i achieve this in perl? Any help would be appreciated.#!/usr/bin/perl @FILES = glob("*.txt"); foreach my $file (@FILES) { open my $fh, '<', $file; (my $fileName = $file) =~ s/\.[^.]+$//; open(my $output, '>', $fileName.".csv") or die "Could not open fil +e '$fileName' $!"; my @category; my @Detail; print $output ""; while (my $line = <$fh>) { chomp $line; @tokens = split /\|/, $line; chomp(@tokens); $objectName=$tokens[0]; if($objectName ne ""){ my @objectFields; $size = scalar(@tokens); @tokens = @tokens[1..$size]; foreach my $token (@tokens){ $token =~ s/\r|\n//g; push @objectFields,$token; } if($objectName eq "IFB Northpole"){ @Detail=@objectFields; }elsif($objectName eq "Walmart"){ @category=@objectFields; }elsif($objectName eq "Chicken"){ @category=@objectFields; }elsif($objectName eq "Beef"){ my @item = (@Detail,@category,@objectFields); print $output join("|", @item,@removeemptylines)."\n"; } } } close $output; close $fh; }
|
|---|