1

在我的代码中,我分配了一个变量 disc 以等于disc我的 linux 系统上命令的结果。这将输出字符串 RESEARCH

my $disc = `disc`;
print "$disc\n";
$disc = chomp($disc);
print "$disc\n";

但是,当我使用 chomp 从字符串中删除换行符时,它会将字符串更改为 1。这是输出

RESEARCH

1

到底是怎么回事?

4

3 回答 3

7

perldoc -f chomp

chomp VARIABLE
chomp( LIST )
chomp   This safer version of "chop" removes any trailing string that
        corresponds to the current value of $/ (also known as
        $INPUT_RECORD_SEPARATOR in the "English" module). It returns the
        total number of characters removed from all its arguments. 

正确的用法是简单地提供一个将就地更改的变量或列表。返回值,即您使用的值,是它“压缩”其参数列表的次数。例如

chomp $disc;

甚至:

chomp(my $disc = `disc`);

例如,您可以 chomp 整个数组或列表,例如:

my @file = <$fh>;          # read a whole file
my $count = chomp(@file);  # counts how many lines were chomped

当然,对于单个标量参数,chomp 返回值只能是 1 或 0。

于 2013-02-18T11:59:53.603 回答
3

避免将 chomp 结果分配给您的变量:

$disc = chomp($disc);

采用:

chomp($disc);

这是因为 chomp 修改了给定的字符串并返回从其所有参数中删除的字符总数

于 2013-02-18T12:01:03.123 回答
2

使用chomp $disc时不要做作,因为chomp返回删除的字符数。

于 2013-02-18T11:58:04.763 回答