Как мне сжать строку, если у меня есть Perl 4? - PullRequest
2 голосов
/ 28 апреля 2009

Я пишу скрипт на своем персональном компьютере, который подключен к удаленному серверу. Я думаю, что на удаленном сервере установлена ​​Perl 4.0 или ниже, и поэтому он не может распознать то же самое. Есть ли альтернатива команде chomp?

Ответы [ 3 ]

5 голосов
/ 28 апреля 2009

Это не точная замена, но вы можете попробовать:

$var =~ s/\r?\n?$//

, который удалит CRLF (DOS), LF (Unix), CR (Mac?).

Обычный оператор chomp всегда удаляет текущий определенный $INPUT_RECORD_SEPARATOR для текущего O / S.

1 голос
/ 28 апреля 2009

Не рекомендуется идти по пути рубки, я бы использовал регулярные выражения, они более понятны и прозрачны для других. Обычная модификация переменной записи в конечном итоге приведет к тому, что какой-то плохой пакет станет грязным и вызовет странные вещи.

0 голосов
/ 28 апреля 2009

Я полагаю, что chop () использовался в pre-5 perl. Не так полезно, как chomp (), конечно. Если вы обрабатываете случайный ввод, вам, вероятно, лучше использовать регулярное выражение, но если вы всегда анализируете файл в формате unix:

while (<F>) {
  chop();
  do_stuff();
}

Как говорится в комментарии ниже, chop () всегда удаляет последний символ l-значения, а не только, если это символ новой строки (или то, что находится в конце строки, var). Я знал это (отсюда и комментарий «не так полезен, как chomp ()»), но почему-то забыл его напечатать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...