[Pdx-pm] Changing contructors w/o breaking compat.

Ovid poec at yahoo.com
Sat Oct 26 13:20:31 CDT 2002


--- Austin Schutz <tex at off.org> wrote:
> 	Err.. Randal's solution supports both forms of the syntax.
> 
> 	Btw, never seen the %{+shift} syntax before. Is that a new thing,
> a sneaky trick, or have I been living under a rock?

That's an old trick.  A unary plus sign can be used to ensure that that function name is used as a
function name rather than being interprested as an argument list.  See perldoc perlop.

  [ovid at ovid ovid]$ perl -MO=Deparse -e '%{shift}'
  %shift;
  -e syntax OK
  [ovid at ovid ovid]$ perl -MO=Deparse -e '%{+shift}'
  %{shift @ARGV;};
  -e syntax OK
  [ovid at ovid ovid]$

As for changing the constructor, another solution may be to take the Sub::NamedParams module
(http://search.cpan.org/author/OVID/Sub-NamedParams-1.01/) and extend it to work with methods in
addition to functions.  I had never bothered to do that.  Perhaps it's time ...

Cheers,
Curtis "Ovid" Poe

=====
"Ovid" on http://www.perlmonks.org/
Someone asked me how to count to 10 in Perl:
push at A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
shift at a;shift at a if $a[$[]eq$[;$_=join q||, at a};print $_,$/for reverse @A

__________________________________________________
Do you Yahoo!?
Y! Web Hosting - Let the expert host your web site
http://webhosting.yahoo.com/



More information about the Pdx-pm-list mailing list