Поскольку это, по-видимому, число, можно переформатировать его как таковое (если это целое число)
my $num = sprintf "%d", $num_in_str;
или заставить Perl позаботиться об этом, заставив его обрабатывать строку как число
my $num = 0 + $num_in_str; # or just: $num_in_str += 0;
Это правильно для любого типа числа в $num_in_str
, и это несравнимо более эффективно, чем sprintf
или запуск двигателя регулярных выражений.Хотя это может показаться непростым делом, он будет дома в подпрограмме
sub rmlz { return 0+$_[0] }
, где вы практически платите только за накладные расходы при вызове функции (все еще немного в Perl).
Оба этивыводите предупреждения, если $num_in_str
не является действительным числом, что, на мой взгляд, хорошо (если только вам не нужно работать с такими вещами, как 0023a
, в этом случае вам нужно регулярное выражение).