On 21 Nov 2002, Jose Malacara wrote:
> Can someone please tell me what I'm doing wrong here?
>
> I have a data file that looks like this:
>
> jason,texas,austin
> tim,denver,colorado
> jose,oregon,portland
>
>
> And a script to update the last field and output the results with the
> new city:
>
>
> #!/usr/bin/perl -w
>
> open(DATAFILE, "datafile") || die "Unable to open file!\n";
> @datafile = <DATAFILE>;
> close(DATAFILE);
>
> print "Enter a name (jason, tim, jose): ";
> $person = <STDIN>;
> chomp ($person);
>
> print "Enter their new city: ";
> $city = <STDIN>;
> #chomp ($city);
>
> foreach $line (@datafile) {
> if ($line =~ /$person/) {
> @words = split(",", $line);
> $words[2] = $city;
> $" = ",";
You have set $" = "," here, this is the reason you are getting an extra
','. It is recommended to make changes on special vars like this
local $" = ",";
when this if finishes $" will be restored to it's original value
> $line = "@words";
Or better still use join
$line = join (',', @words);
perldoc -f join
> } # end if
> push(@newdata, $line);
> } # end foreach
> print "@newdata";
>
>
> I am expecting to see the output in the same original format, but I keep
> getting this instead:
>
> jason,texas,austin
> ,tim,denver,boulder
> ,jose,oregon,portland
>
> I am just not sure why all lines after the first begin with a space
> (thus a comma)
>
> Any help would be greatly appreciated!
>
> Jose
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]