in reply to Re: Re: Detecting constant arguments passed to subroutines
in thread Detecting constant arguments passed to subroutines

I just found the real functions I was looking for readonly in Scalar::Util. I haven't figured out yet why calling it indirectly via the is_const function doesn't detect that undef is a constant, as perl dies with an error when trying to modify the undef constant, but at least the readonly is easier to read and comprehend. If anyone can explain the undetect undef constant in is_const I'd be greatful.
use Scalar::Util 'readonly'; sub is_const { readonly($_[0]); } print "undef is readonly\n" if readonly(undef); print "undef not detected in is_const\n" unless is_const(undef); for $x (4, "a", undef) { print "$x ";$x="VAR" unless readonly($x); print $x,"\n"; } for $x (4, "a", undef) { print "$x ";$x="VAR" unless is_const($x); print $x,"\n"; }

Replies are listed 'Best First'.
Re^2: Detecting constant arguments passed to subroutines
by Anonymous Monk on Sep 14, 2005 at 00:24 UTC
    It is a difference between:
    sub is_const { readonly($_[0]); }
    sub is_const { readonly(@_); }
    sub is_const { readonly($_); }
    
    --
    Lubomir Host 'rajo'
    http://rajo.platon.sk