On Tue, 2004-01-20 at 16:20, Jan Eden wrote:
> 
> I had a similar problem passing a filehandle to a sub and learned that I had to use 
> the typeglob instead.
> HTH,Jan
> 
> B McKee wrote:
> >Hi All,
> >I'm having trouble understanding what use strict is trying to tell me.
> >If I have run this program
> >-CODE---------------------------------------
> >#!/usr/bin/perl -wT
> ># use warnings and turn on data tainting
> >use CGI qw(:standard);
> >$CGI::POST_MAX=1024 * 100;
> >$CGI::DISABLE_UPLOADS = 1;
> >use strict;
> >use diagnostics;
> >
> ># Declare Variables
> >my ( $datafile, $page );
> >$datafile="message.txt";
> >
> ># Open message file and read in the contents
> >open(MESSAGE, "$datafile") or die "Cannot open datafile: $!";
> >while (!eof(MESSAGE)) {
> >     $page = new CGI(MESSAGE);
> >     print $page->param('message'),
> >           $page->br,"\n",
> >           "Submitted by: ",
> >           $page->param('person'),
> >           $page->br,"\n",
> >           "On: ",
> >           $page->param('dateposted'),
> >           $page->br,"\n";
> >}
> >-ENDCODE------------------------------------------
> >
> >I get this
> >
> >-RESULTS------------------------------------------
> >Bareword "MESSAGE" not allowed while "strict subs" in use at 
> >../errorprog.pl
> >         line 16 (#1)
> >
> >     (F) With "strict subs" in use, a bareword is only allowed as a
> >     subroutine identifier, in curly brackets or to the left of the "=>" 
> >symbol.
> >     Perhaps you need to predeclare a subroutine?
> >
> >Execution of ./errorprog.pl aborted due to compilation errors (#2)
> >
> >     (F) The final summary message when a Perl compilation fails.
> >
> >Uncaught exception from user code:
> >         Execution of ./errorprog.pl aborted due to compilation errors.
> >-ENDRESULTS-----------------------------------------
> >
> >My questions are:
> >
> >1)  Why is it warning me at all?  Using a bare word in the filehandle 
> >is common
> >in my Perl manuals.  In this case a bare word does everything I need it 
> >to do.
> >What is this warning trying to prevent?
> >
> >2)  If I replace MESSAGE with $filehandlename and add $filehandlename 
> >to the my () block
> >it doesn't complain.  If I do that I haven't assigned a value to 
> >$filehandlename.
> >Does that mean my filehandle is actually 'undef'?
> >That doesn't seem right somehow, especially if I have multiple files 
> >open in
> >a different circumstance.  What value should I assign to 
> >$filehandlename? MESSAGE?
> >
> >
> >All comments appreciated.
> >Brian

I can hear Foghorn Leghorn somewhere saying
"What we have here boy, is a failure to communicate!"

Thanks to all who responded.   
 
_I_ didn't read the (&*^&%! error message correctly.   
I thought the problem was the OPEN line when in fact it was
$page = new CGI(MESSAGE);
that was generating the error.   Now the comments about
using a typeglob make sense.
Sorry for the mixup.

Brian

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to