ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
7.6 The split and join FunctionsRegular expressions can be used to break a string into fields. The 7.6.1 The split FunctionThe $line = "c:\\;;c:\\windows\\;c:\\windows\\system;"; @fields = split(/;/,$line); # split $line, using ; as delimiter # now @fields is ("c:\", "", "c:\windows","c:\windows\system") Note how the empty second field became an empty string. If you don't want this to happen, match all of the semicolons in one fell swoop: @fields = split(/;+/, $line); This matches one or more adjacent semicolons together, so that there is no empty second field. One common string to split is the $_ = "some string"; @words = split(/ /); # same as @words = split(/ /, $_); For this split, consecutive spaces in the string to be split will cause null fields (empty strings) in the result. A better pattern would be
@words = split; # same as @words = split(/\s+/, $_); Empty trailing fields do not normally become part of the list. This rule is not generally a concern. A solution like this: $line = "c:/;c:/windows;c:/windows/system;"; ($first, $second, $third, $fourth) = split(/;/,$line); # split $line, using ; as delimiter would simply give 7.6.2 The join FunctionThe $bigstring = join($glue,@list); For example, to rebuild the $outline = join(";", @fields); Note that the glue string is not a regular expression - just an ordinary string of zero or more characters. If you need to get glue ahead of every item instead of just between items, a simple cheat suffices: $result = join("+", "", @fields); Here, the extra $output = join ("\n", @data, ""); |