Если строка в $_
:
s/\D+?$//;
[EDIT]: Следует использовать не жадное сопоставление (+?
), если строка может заканчиваться \n
, чтобы избежать удаления этого символа (спасибо DanD за это указание) , Это работает, потому что $
будет соответствовать либо концу строки, либо непосредственно перед \n
в конце строки.
При работе со строками текста, как правило, рекомендуется сначала удалить любой конечный \n
, вызвав chomp()
, затем выполнить любую необходимую работу и, наконец, добавить \n
, когда строка записана , Это упрощает обработку суффиксов и вычисление длины строки и является достаточно полезным, поскольку perl предоставляет опцию -l
для автоматизации процесса для однострочников. В этом случае можно использовать более простой s/\D+$//;
:
perl -lpe "s/\D+$//" < in.txt > out.txt