$ perl -E 'sub foo { $_[0]= 5 } foo(4)' Modification of a read-only value attempted at -e line 1.
I would call '4' a "constant", though it appears perl calls it a "read-only value". You can find out whether one of your parameters is readonly like this:
use Scalar::Util "readonly"; sub foo { printf "%s\n", readonly($_[0])? "readonly" : "writable"; $_[0]= 5 if !readonly($_[0]) } foo(4); foo(my $x= 4); print "$x\n";
Maybe tinyperl's errors are different. If you had an error somewhere like "Can't use a constant as an LVALUE" I can see where that might have been confusing, but LVALUE is referring to "a thing which can be assigned-to", and that error would be saying basically that you can't use a read-only or constant on the left side of an equal sign.
In reply to Re^3: How to find out if an argument is an LVALUE ?
by NERDVANA
in thread How to find out if an argument is an LVALUE ? (TinyPerl)
by harangzsolt33
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |