use Scalar::Util qw( dualvar ); sub sensible { return dualvar(1, "one"); } my $foo = sensible(); print "Result = ", ''.$foo, "\n"; # Result = one print "Result = ", 0+$foo, "\n"; # Result = 1