2013-02-18 1 views
0

В моем коде я назначаю переменный диск равным результату команды disc в моей Linux-системе. Это выводит строку RESEARCHChomp меняет мою строку на 1

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

Однако, когда я использую Chomp раздеться символ новой строки из строки она изменяется строка 1. Здесь есть выход

RESEARCH 

1 

Что происходит?

ответ

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`); 

Например, вы можете грызть весь массив или список, например:

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

Конечно, с одним скалярным аргументом, возвращение грызть значение может быть только 1 или 0.

2

Просто используйте chomp $disc без помех beacause chomp возвращает количество удаленных символов.

+0

'грызть $ disc' также возвращает 1 – moadeep

+0

@moadeep: Да, конечно, он возвращает количество удаленных символов. просто используйте 'chomp $ disc;' – Toto

1

Избегайте присвоения результата chomp вашей переменной:

$disc = chomp($disc); 

использование:

chomp($disc); 

Это происходит потому, что грызть изменяет заданную строку и возвращает общее число символов, удаленных от всех ее аргумент

 Смежные вопросы

  • Нет связанных вопросов^_^