В духе TIMTOWTDI и введения новых функций: Использование неразрушающего параметра /r
my $partial = $string =~ s/\..*//sr;
Жадный конец .*
отрубит все после первого периода, включая возможные символы новой строки (опция /s
), но оставит исходную строку без изменений и избавит паренов от необходимости навязывать контекст списка (опция /r
) ).
Цитата из perlop:
Если используется параметр / r (неразрушающий), запускается
подстановка на копию строки и вместо возврата
число замен, возвращает копию независимо от того,
замена произошла. Исходная строка никогда не изменяется, когда / r
используемый. Копия всегда будет простой строкой, даже если ввод
объект или связанная переменная.