Thank you so much for the gift of your time in explaining that. It makes sense to me
now.
-Kevin Zembower
>>> Gisle Aas <[EMAIL PROTECTED]> 11/20/01 02:11PM >>>
"KEVIN ZEMBOWER" <[EMAIL PROTECTED]> writes:
> In diagnosing a problem, I've discovered that this program:
> #!/usr/local/bin/perl
> use CGI qw/:standard/;
> use LWP::Simple ;
>
> causes this error:
> Prototype mismatch: sub main::head vs ($) at ./z.pl line 3
>
> If I change the program to:
> #!/usr/local/bin/perl
> use CGI;
> use LWP::Simple ;
>
> the error goes away.
>
> Does this mean you can't mix styles (function-oriented vs. object-oriented) in the
>same program?
It means that CGI and LWP::Simple try to export the same function.
You get the warning printed because the prototype of the exported
functions does not match.
The workaround is to be more explicit in what functions you import.
use CGI qw/:standard/; # imports &head and a bunch of others
use LWP::Simple qw(get); # avoids importing &head
or if you actually want the head function from LWP::Simple and still
want to import all the :standard functions:
use CGI qw/:standard/;
use LWP::Simple (); # don't import anything
*lwp_head = \&LWP::Simple::head # manual import (with renameing)
# head() calls CGI's head
# lwp_head() calls LWP's head
or you could do this:
use CGI qw/:standard/; # import &head and others
BEGIN { delete $main::{head}; } # unimport &head
use LWP::Simple qw(head); # import &head
or you can simply avoid importing and use always fully qualified names:
use CGI ();
use LWP::Simple ();
if (LWP::Simple::head("http://www.activestate.com")) {
print CGI::head("ActiveState is up!"), "\n";
}
Regards,
Gisle