Perl chomp не удаляет все новые строки - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть такой код:

#!/usr/bin/perl
use strict;
use warnings;
open(IO,"<source.html");
my $variable = do {local $/; <IO>};
chomp($variable);
print $variable;

Однако, когда я его печатаю, он все еще имеет переводы строки?

Ответы [ 3 ]

17 голосов
/ 13 апреля 2011

Удаляет последний символ новой строки.

Поскольку вы разбиваетесь на весь файл, вам потребуется выполнить подстановку регулярных выражений, чтобы избавиться от них:

$variable =~ s/\n//g;
7 голосов
/ 13 апреля 2011

Chomp удаляет только символ новой строки (на самом деле, текущее значение $/, но в вашем случае это символ новой строки) с конца строки.Чтобы удалить все новые строки, выполните:

$variable =~ y/\n//d;
2 голосов
/ 13 апреля 2011

Или вы можете chomp каждая строка, как вы читаете в:

#!/usr/bin/perl

use strict;
use warnings;

open my $io, '<', 'source.html';
my $chomped_text = join '', map {chomp(my $line = $_); $line} <$io>;

print $chomped_text;
...