Как мне сжать строку, если у меня есть Perl 4?
Я пишу сценарий на моем персональном компьютере, который подключен к удаленному серверу. Я думаю, что на удаленном сервере установлена Perl 4.0 или более поздняя версия, и поэтому он не может распознать то же самое. Есть ли альтернатива chomp
команда?
3 ответа
Это не точная замена, но вы можете попробовать:
$var =~ s/\r?\n?$//
который будет раздвигать либо CRLF (DOS), LF (Unix), CR (Mac?).
Обычный оператор chomp всегда удаляет текущий определенный $INPUT_RECORD_SEPARATOR
для текущего O/S.
Ходить по пути рубки не рекомендуется, я бы использовал регулярные выражения, они более понятны и прозрачны для других. Привычная модификация переменной записи в конечном итоге приведет к тому, что в результате будет получен какой-то плохой пакет и возникнут странные вещи.
Я полагаю, что chop () использовался в pre-5 perl. Не так полезно, как chomp (), конечно. Если вы обрабатываете произвольный ввод, вам, вероятно, лучше использовать регулярное выражение, но если вы всегда анализируете файл в формате unix:
while (<F>) {
chop();
do_stuff();
}
Как говорится в комментарии ниже, chop () всегда удаляет последний символ lvalue, а не только если это символ новой строки (или то, что находится в конце строки var). Я знал это (отсюда и комментарий "не так полезен, как chomp ()"), но почему-то забыл его напечатать.