"Scott.Lutz" wrote:
>
> This is getting a touch off base from where I wanted to go, but the jist
> of what I started with is this.
> Open a .csv file, enter every record into the array, one at a time, then
> copy the first value to the third last value, then print this value back
> to a new .csv file, including the comma separating the values. I have
> all of these bases covered, except that it is not outputting to the new
> file with the commas intact. Below is the original snip, as this problem
> is still needing a final solution.
>
> ___Snip___
> #!/usr/bin/perl
#!/usr/bin/perl -w
use strict;
# these two lines would have caught most of your mistakes
> open (FIN, "<statsfinal2.csv") || die "cant open INPUT file"; @data =
> <FIN>; close (FIN);
>
> open (FOUT, "> STATS_output.csv") || die "cant open OUTPUT file";
>
> my $output;
>
> print "Starting !\n";
> $count = "1";
> foreach $line (@data) {
> chomp;
Here you are chomp()ing $_ but your data is in $line
> if ( $line eq "" ) { next; }
Because $line isn't chomp()ed this will never be true.
> else {
> my @string = split(/,/, $line);
> if (@string[0,1] eq "" ) { next; }
An array in a scalar context will return the number of elements in the array so this
statement is the same as:
if ( 2 eq "" ) { next; }
> else {
> $copy_data = $string[0];
> $string[34] = $copy_data;
> #print join( ',', @output),"\n";
> #print (@output);
> @string =~ join( ',', @string),"\n";
=~ is used to bind scalars to m//, s///, or tr///. It is a syntax error.
> push (@output, "@string");
> print "Line $count parsed with FIRST -> $string[0] and
> LAST -> $string[34]\n"; # visual aide
> }
> $count++;
> }
> print FOUT @output;
>
> close (FOUT);
Here is how I would do it:
#!/usr/bin/perl -w
use strict;
open FIN, '< statsfinal2.csv' or die "cant open statsfinal2.csv: $!";
open FOUT, '> STATS_output.csv' or die "cant open STATS_output.csv: $!";
print "Starting !\n";
while ( <FIN> ) {
chomp;
next unless /\S/;
my @string = split /,/;
next unless length $string[0] and length $string[1];
@string[0,34] = @string[34,0];
print FOUT join( ',', @string ), "\n";
print "Line $. parsed with FIRST -> $string[0] and LAST -> $string[34]\n"; #
visual aide
}
close FOUT;
close FIN;
__END__
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]