in reply to Re^2: How to find out if an argument is an LVALUE ?
in thread How to find out if an argument is an LVALUE ? (TinyPerl)

Do you mean this?
$ 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.