in reply to Open file & Strip comma delimiter
You will need to show us some of the data you are parsing and what you hope to get out. Your use of substr makes very little sense. Here is some code that compiles for a start as uses an array for the fields as well as the ever faithful join. Note how we use $infile and $outfile so we can include them in our error messages easily.....
#!/usr/bin/perl -w use strict; my $infile = 'c:/doclist.chr'; my $outfile = 'c:/doclist.txt'; open IN, "<$infile" or die "Couldn't open $infile, $!"; open OUT,">$outfile" or die "Couldn't open $outfile, $!"; while(<IN>) { chomp; my @fields = split /,/; my $string1 = $fields[6]; do { warn "Empty field 7"; next } unless $string1; # this will keep the first 24 chars of string, throw out the rest a +nd # then append H:\ to it. # need \\ here or it won't compile substr($string1, 24) = "H:\\"; # this will return :\ as we get 2 chars LEN from pos 25 my $string2 = substr($string1,25,2); # this will set $string3 to the last 13 chars of the string my $string3 = substr($string1,-13); my $finstring = $string1.$string2.$string3; my $out = join '|', @fields[0..5], $finstring, "\n"; print OUT $out; } __DATA__ substr EXPR,OFFSET,LEN,REPLACEMENT substr EXPR,OFFSET,LEN substr EXPR,OFFSET Extracts a substring out of EXPR and returns it. First character is at + offset 0, or whatever you've set $[ to (but don't do that). If OFFSET is negativ +e (or more precisely, less than $[), starts that far from the end of the + string. If LEN is omitted, returns everything to the end of the string. If LEN + is negative, leaves that many characters off the end of the string. If you specify a substring that is partly outside the string, the part within the string is returned. If the substring is totally ou +tside the string a warning is produced. You can use the substr() function as an lvalue, in which case EXPR mus +t itself be an lvalue. If you assign something shorter than LEN, the string wil +l shrink, and if you assign something longer than LEN, the string will grow to a +ccommodate it. To keep the string the same length you may need to pad or chop you +r value using sprintf(). An alternative to using substr() as an lvalue is to specify the replac +ement string as the 4th argument. This allows you to replace parts of the EX +PR and return what was there before in one operation, just as you can with sp +lice().
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Open file & Strip comma delimiter
by skyler (Beadle) on Feb 17, 2003 at 00:44 UTC | |
by tachyon (Chancellor) on Feb 17, 2003 at 02:42 UTC | |
by skyler (Beadle) on Feb 17, 2003 at 04:08 UTC | |
by tachyon (Chancellor) on Feb 17, 2003 at 05:28 UTC |