Thanks, what I read the difference between use and require is that module included by use is loaded in compilation while it is loaded in execution by require, but they won't cause any difference on hornoring the protocol defined for the sub. But in my example, if I use 'use', then I should call the sub with ($$@@) instead of ($$\@\@) as defined for sub's protocol. Also, when trying your 3 commands, only the second one seems good.
$ perl -le "sub f($$@@){warn qq{@_}}; f(@ARGV,@ARGV,@ARGV); " 1 2 3 4 +5 Malformed prototype for main::f: 29673@@ at -e line 1. $ perl -le " eval q{sub f($$@@){warn qq{@_}}}; f(@ARGV,@ARGV,@ARGV); " + 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 at (eval 1) line 1. $ perl -le " sub f($$@@); eval q{sub f($$@@){warn qq{@_}}}; f(@ARGV,@A +RGV,@ARGV); " 1 2 3 4 5 Malformed prototype for main::f: 29673@@ at -e line 1.
In reply to Re^2: Any difference between use and require regarding honoring prototype defined for sub? (prototype)
by stewart_lee
in thread Any difference between use and require regarding honoring prototype defined for sub?
by stewart_lee
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |