次の問題を解決するには?perlの文字列と数値の引数を区別する
use 5.014;
use warnings;
use Test::Simple tests => 4;
ok(doit(0123) == 83, "arg as octal number");
ok(doit(83) == 83, "arg as decimal number");
ok(doit('0123') == 83, "arg as string with leading zero");
ok(doit('123') == 83, "arg as string without leading zero");
sub doit {
my $x = shift;
return $x; # how to replace this line
#return got_the_arg_as_string ? oct($x) : $x; # with something like this
}
など。私がdoit
サブ文字列に渡す場合、引用符で囲まれた値 - (先頭に0を付けてもしなくても)8進値に変換する必要があります。それ以外の場合は、単なる数字です。
が疑問に思います異なる動作をします。私にとってこれは未来のバグの源のように見えます... – jm666
@cajwine:これはdoit( '123')が8進数であると考えられるかどうかという質問であなたが言うことと矛盾しますか? – ysth