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>