use strict; use warnings; my $a = "123"; foo($a, "456"); sub foo { for (my $i = 0; $i < @_; $i++) { my $type = eval { $_[$i] = "variable" } || "constant"; printf "Arg #%d is $type\n", $i + 1; } } #### Arg #1 is variable Arg #2 is constant