Функции split и join.
$line = "gds::*::1001::20::Samolyuk German::/home/gds::/usr/local/bin/tcsh"; @fields = split(/:/, $line); # разбить $line, используя в качестве # разделителя двоеточие # @fields содержит ("gds","","*","","1001","","20","","Samolyuk German","", # "/home/gds","","/usr/local/bin/tcsh")
Второе поле : стало пустой строкой, если вы этого не хотите:
@fields = split(/:+/, $line);
Использование автоматической переменной:
$_ = "this is a some text"; @words = split(/ /); # @words = split(/ /, $_);
Соседние пробелы вызовут появление пустых строк. Лучше использовать образец / +/
или /\s+/. Или по умолчанию:
@words = split; # @words = split(/\s+/, $_);
Пример:
$line = "gds::*::1001::20::Samolyuk German::/home/gds::/usr/local/bin/tcsh"; ($name, $password, $uid, $gid, $gcos, $home, $shell, $a) = split(/:+/, $line); # $a - undef
Функция join берет список значений с склеивает их, ставя между элементами списка строку связку:
$string = join($glue, @list); $outline = join(":", @fields);