Как решить следующее?Разделить аргумент строки и числа в 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
}
E.g. Если я перехожу к doit
под любым строковым средним значением - (с нулевым или без начального нуля), он должен быть преобразован в восьмеричное значение. В противном случае это просто число.
Хотите знать, почему вы хотите такой интерфейс, где в кавычках и без аргументов ведет себя по-другому. Для меня это похоже на источник будущих ошибок ... – jm666
@cajwine: это противоречит тому, что вы говорите в вопросе, где вы хотите, чтобы doit ('123') считался восьмеричным? – ysth