On Sunday 19 December 2010 22:23:15 Bill Casey wrote:
> Hi
>
> Below is a Perl script which won't compile. My operating system is
> Windows XP Home and Perl version is 5.10.1.3.
>
This script after I placed it in a file compiles fine here:
{{{
shlomif:~$ cat test.pl
#!/usr/bin/perl
# import_track.prl
use warnings;
use strict;
open (INFILE, "track.txt") or die $!;
open (OUTFILE, ">outtrack.plt") or die $!;
my $outstring;
while (<INFILE>)
{
$outstring = (" " . substr($_,0,10) . ", " . substr($_,14,10) + ",0,
" . substr($_,28,6));
print OUTFILE "$outstring\n";
}
close (INFILE);
close (OUTFILE);
shlomif:~$ perl -c test.pl
test.pl syntax OK
}}}
perl-5.12.2-5mdv2011.0.i586 on Mandriva Linux Cooker, but should work fine
with perls back to at least 5.6.x. A few notes on it, though:
> #!/usr/bin/perl
> # import_track.prl
> use warnings;
> use strict;
>
> open (INFILE, "track.txt") or die $!;
> open (OUTFILE, ">outtrack.plt") or die $!;
>
Use three-args open and lexical file handles:
http://perl-begin.org/tutorials/bad-elements/#open-function-style
> my $outstring;
>
You should declare $outstring inside the loop, or maybe get rid of it
completely and just output the expression.
> while (<INFILE>)
Using an explicit assigning «my $line = <$in_fh>» would be better here.
> {
> $outstring = (" " . substr($_,0,10) . ", " . substr($_,14,10) + ",0,
> " . substr($_,28,6));
You want the "." operator instead of the "+" operator and you should cut
the line into two lines in the middle.
> print OUTFILE "$outstring\n";
This should be:
print {$out_fh} "$outstring\n";
With the curlies. See:
http://perl-begin.org/tutorials/bad-elements/#print_to_fh
> }
>
> close (INFILE);
> close (OUTFILE);
>
> When I attempt to compile I get the error messages:
> Syntax error at import_track.pl line 11, near ") {"
> Syntax error at import_track.pl line 14, near "}"
> This appears to me to be related to the "{" and "}" but I am a beginner!
>
Welcome aboard! See the resources on http://perl-begin.org/ .
Regards,
Shlomi Fish
> I would appreciate help on this.
>
> Thanks
> Bill Casey
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
List of Portability Libraries - http://shlom.in/port-libs
Chuck Norris can make the statement "This statement is false" a true one.
Please reply to list if it's a mailing list post - http://shlom.in/reply .
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/