Я знаю, что следующие три строки кода направлены на извлечение строки в $ value и сохранение ее в $ header. Но я не знаю, в чем разница между $value =~ s/^\s+//; и $value =~ s/\s+$//;.
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$value =~ s/^\s+//; $value =~ s/\s+$//; $header[$i]= $value;
С perldoc perlfaq4:
perldoc perlfaq4
Как убрать пробел из начала / конца строки? Замена может сделать это для вас. Для одной строки, вы хотите заменить все начальные или конечные пробелы ни на что. Вы можете сделать это с парой замен: s/^\s+//; s/\s+$//; Вы также можете написать это как одну подстановку, хотя это получается из комбинированного утверждения медленнее, чем отдельные. Тот может не иметь значения для вас, хотя: s/^\s+|\s+$//g; В этом регулярном выражении чередование совпадает либо с начало или конец строки, так как якоря имеют более низкий приоритет чем чередование. С флагом /g замена делает все возможные совпадения, поэтому он получает оба. Помните, в конце символ новой строки соответствует \s+, а якорь $ может соответствовать абсолютный конец строки, поэтому символ новой строки также исчезает.
Как убрать пробел из начала / конца строки?
Замена может сделать это для вас. Для одной строки, вы хотите заменить все начальные или конечные пробелы ни на что. Вы можете сделать это с парой замен:
s/^\s+//; s/\s+$//;
Вы также можете написать это как одну подстановку, хотя это получается из комбинированного утверждения медленнее, чем отдельные. Тот может не иметь значения для вас, хотя:
s/^\s+|\s+$//g;
В этом регулярном выражении чередование совпадает либо с начало или конец строки, так как якоря имеют более низкий приоритет чем чередование. С флагом /g замена делает все возможные совпадения, поэтому он получает оба. Помните, в конце символ новой строки соответствует \s+, а якорь $ может соответствовать абсолютный конец строки, поэтому символ новой строки также исчезает.
/g
\s+
$
А с perldoc perlrequick:
perldoc perlrequick
Чтобы указать, где он должен совпадать, мы будем использовать якорь метасимволы ^ и $. Якорь ^ означает совпадение на начало строки и якорь $ означает совпадение в конце строка или перед новой строкой в конце строки. Немного Примеры: "housekeeper" =~ /keeper/; # matches "housekeeper" =~ /^keeper/; # doesn't match "housekeeper" =~ /keeper$/; # matches "housekeeper\n" =~ /keeper$/; # matches "housekeeper" =~ /^housekeeper$/; # matches
Чтобы указать, где он должен совпадать, мы будем использовать якорь метасимволы ^ и $. Якорь ^ означает совпадение на начало строки и якорь $ означает совпадение в конце строка или перед новой строкой в конце строки. Немного Примеры:
^
"housekeeper" =~ /keeper/; # matches "housekeeper" =~ /^keeper/; # doesn't match "housekeeper" =~ /keeper$/; # matches "housekeeper\n" =~ /keeper$/; # matches "housekeeper" =~ /^housekeeper$/; # matches
Первый заменит пробел только в начале строки.
^ означает, что начинается с, $ означает, заканчивается на этой строке.