use Scalar::Util qw(dualvar); my %Error=(220=>"Cannot connect to service"); sub mysub { if (@_) { return dualvar(0,1); } else { return dualvar(220,0); } } my $x; $x=mysub() or die $Error{$x}; #### use Scalar::Util qw(dualvar); my %Error=(220=>"Cannot connect to service"); sub mysub { if (@_) { $@=dualvar(0,1); } else { $@=dualvar(220,0); } return $@ } mysub() or die sprintf "%d %s",$@,$Error{0+$@};