Perl | split() Function

23 Jun, 2020
split() is a string function in Perl which is used to split or you can say to cut a string into smaller sections or pieces. There are different criteria to split a string, like on a single character, a regular expression(pattern), a group of characters or on undefined value etc.. The best thing about this function that user can specify how many sections to split the string into.
Syntax:
split /Pattern/, Expression, Limit

or

split /Pattern/, Expression

or

split /Pattern/

or

Split

In the above syntax, Pattern is specified a regular expression which provides the criteria to split the string. The Expression is the string which is to be split. The Limit is kind of restriction which stops the splitting at (n-1)th pattern found in the string.
Return Value: This method returns the value in two context as follows:
In Array Context: Here it returns a list of the fields which found in Expression. If no Expression is specified then it returns $_.
In Scalar Context: Here it returns the number of fields which found in Expression and then stored the fields in the @_ array.
There are different ways to use split() Function as follows:
Splitting on a Character
Splitting among a String without Limit
Splitting among a String with Limit
Splitting on a Undefined value
Splitting on a Regex(Pattern)
Splitting on Hash
Splitting on Space
User can break or split the string on different characters like comma(,) backslash(\) etc. This type of splitting is generally used when you have to parse the data from another program or a file. Don’t use split() to parse the CSV(comma separated value) files. If there are commas in your data then use Text::CSV instead.
Example:
# Perl program to demonstrate the splitting on character  #!/usr/bin/perluse strict;use warnings;  # Here character is comma(, )my $str = 'Geeks, for, Geeks';  # using split() functionmy @spl = split(', ', $str);  # displaying result using foreach loopforeach my $i (@spl) {    print "$i";}
GeeksforGeeks

This also works same as the splitting on the character. Here string’s data is separated by two !!.
Example:
# Perl program to demonstrate the# splitting among string without Limit  #!/usr/bin/perluse strict;use warnings;  # string which is separated by !! signmy $str = 'GFG!!Geeks!!55!!GeeksforGeeks';  # using split function without Limitmy @spl = split('!!', $str);  # displaying string after splittingforeach my $i (@spl) {    print "$i\n";}
GFG
Geeks
55
GeeksforGeeks

This also works same as the splitting on the character. Here string’s data is separated by two !!. Here the user can restrict the number of sections the string will split into by passing the third argument in split function which will be a positive integer value. In below example user pass the Limit as 3 so it will restrict the splitting of the string into 3, even there are the 4 occurrences of !! in the string.
Example:
# Perl program to demonstrate the # splitting on string with Limit  #!/usr/bin/perluse strict;use warnings;  # string which is separated by !! signmy $str = 'GFG!!Geeks!!55!!GeeksforGeeks';  # using split function with Limitmy @spl = split('!!', $str, 3);  # displaying string after splittingforeach my $i (@spl) {    print "$i\n";}
GFG
Geeks
55!!GeeksforGeeks

If the user will try to split on an undefined value, then the string will split on every character.
Example:
# Perl program to demonstrate the # splitting on undefined value  #!/usr/bin/perluse strict;use warnings;  # string to be splitmy $str = 'GeeksforGeeks GFG';  # using split functionmy @spl = split(undef, $str);  # displaying string after splittingforeach my $i (@spl) {    print "$i\n";}
Output:
G
e
e
k
s
f
o
r
G
e
e
k
s
 
G
F
G

Runtime Error:
Use of uninitialized value in regexp compilation at /home/38ececda726bcb7e68fb7b41eee5b8d9.pl line 12.
Sometimes user may want to split the string on a pattern(regex) or a particular type of character. Here we will use the special character classes to make pattern of digits(integer) as follows:
Example:
# Perl program to demonstrate the # splitting on a pattern(regex)  #!/usr/bin/perluse strict;use warnings;  # string to be splitmy $str = 'Geeks1for2Geeks';  # using split function# \d+ will match one or more# integer numbers & placed # between two //my @spl = split(/\d+/, $str);  # displaying string after splittingforeach my $i (@spl) {    print "$i\n";}
Geeks
for
Geeks

A user can split the data or string into the hash instead of an array. Basically, a hash is a key/value pair. Before splitting user must have knowledge about the hashes.
Example:
# Perl program to demonstrate the # splitting into the hash  #!/usr/bin/perluse strict;use warnings;  # hash to be splitmy $has = 'GFG=1;GEEKS=2;PROGEEK=3';  # using split functionmy %spl = split(/[=;]/, $has);  # after splitting displaying the valuesforeach my $i (keys %spl) {    print "$i:$spl{$i}\n";}
GFG:1
GEEKS:2
PROGEEK:3

Here space doesn’t mean only ‘ ‘ this space but it also includes the newline, tabs etc.
Example:
# Perl program to demonstrate the # splitting on space  #!/usr/bin/perluse strict;use warnings;  # string to be splittedmy $str = "ProGeek\n\nSudo\nPlacements";  # using split functionmy @spl = split(' ', $str);  # Displaying result by printing# 'GFG' either side of the # value, so that user can see # where it splitforeach my $i (@spl){    print "GFG${i}GFG\n";}
GFGProGeekGFG
GFGSudoGFG
GFGPlacementsGFG

As split() function also returns the value in scalar context. So for storing the return values user have to define some scalar values according to the number of sections of splitting. In below example there will be 4 values after splitting so here user will define the 4 scalars values and store the return values.Example:# Perl program to demonstrate the # splitting on string and storing # values in scalars  #!/usr/bin/perluse strict;use warnings;  # string which is separated by !! signmy $str = 'GFG!Sudo!GeeksforGeeks!ProGeek';  # using split function and # storing values in scalarsmy ($sc1, $sc2, $sc3, $sc4) = split('!', $str);  # displaying string after splittingprint "$sc1\n$sc2\n$sc3\n$sc4";Output:GFG
Sudo
GeeksforGeeks
ProGeek

Example:
# Perl program to demonstrate the # splitting on string and storing # values in scalars  #!/usr/bin/perluse strict;use warnings;  # string which is separated by !! signmy $str = 'GFG!Sudo!GeeksforGeeks!ProGeek';  # using split function and # storing values in scalarsmy ($sc1, $sc2, $sc3, $sc4) = split('!', $str);  # displaying string after splittingprint "$sc1\n$sc2\n$sc3\n$sc4";
GFG
Sudo
GeeksforGeeks
ProGeek

There may be a situation when user don’t pass in a string to split, then by default split() function will use the $_ and if user don’t pass a Expression i.e. the string to split on then it will use ‘ ‘(a space).Example:# Perl program to demonstrate the # split() function and context  #!/usr/bin/perluse strict;use warnings;  # using foreach loop containing string valuesforeach ('G F G', 'Geeks for Geeks'){    # using split() function    my @spl = split;          # displaying values to be split    print "Split $_:\n";          foreach my $i (@spl)    {        print " $i\n";    }}Output:Split G F G:
 G
 F
 G
Split Geeks for Geeks:
 Geeks
 for
 Geeks

Example:
# Perl program to demonstrate the # split() function and context  #!/usr/bin/perluse strict;use warnings;  # using foreach loop containing string valuesforeach ('G F G', 'Geeks for Geeks'){    # using split() function    my @spl = split;          # displaying values to be split    print "Split $_:\n";          foreach my $i (@spl)    {        print " $i\n";    }}
Split G F G:
 G
 F
 G
Split Geeks for Geeks:
 Geeks
 for
 Geeks

If the delimiter is present at the starting of the string which is to be split, then the first element of return values will be empty and that will store into the array. In below example we have this situation and we are printing the empty value of resulted array:Example:# Perl program to demonstrate the # split() function with the Delimiter# at the start of the string  #!/usr/bin/perluse strict;use warnings;  # string containing delimiter(, ) # at the starting my $str = ', GFG, Geeks';  # using split functionmy @spl = split(', ', $str);  # printing "Array_Element: " with each # returned value so that you can see# the empty oneforeach my $i (@spl) {    print "Array_Element: $i\n";}Output:Array_Element: 
Array_Element: GFG
Array_Element: Geeks

Example:
# Perl program to demonstrate the # split() function with the Delimiter# at the start of the string  #!/usr/bin/perluse strict;use warnings;  # string containing delimiter(, ) # at the starting my $str = ', GFG, Geeks';  # using split functionmy @spl = split(', ', $str);  # printing "Array_Element: " with each # returned value so that you can see# the empty oneforeach my $i (@spl) {    print "Array_Element: $i\n";}
Array_Element: 
Array_Element: GFG
Array_Element: Geeks

If you want to keep the delimiter in result also then simply put that delimiter inside the parentheses.Example:# Perl program to demonstrate the # split() function and keeping # the delimiter  #!/usr/bin/perluse strict;use warnings;  # string to be splitmy $str = 'Geeks1for2Geeks';  # using split function# \d+ will match one or more# integer numbers & placed # between two // and () to # keep the delimiter in resultmy @spl = split(/(\d+)/, $str);  # displaying string after splittingforeach my $i (@spl) {    print "$i\n";}Output:Geeks
1
for
2
Geeks

Example:
# Perl program to demonstrate the # split() function and keeping # the delimiter  #!/usr/bin/perluse strict;use warnings;  # string to be splitmy $str = 'Geeks1for2Geeks';  # using split function# \d+ will match one or more# integer numbers & placed # between two // and () to # keep the delimiter in resultmy @spl = split(/(\d+)/, $str);  # displaying string after splittingforeach my $i (@spl) {    print "$i\n";}
Geeks
1
for
2
Geeks

nidhi_biet
Perl-function
Perl-method
Perl-String
Perl-String-Functions
Perl
Perl
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Perl | Arrays
Perl Tutorial - Learn Perl With Examples
Perl | Boolean Values
Perl | length() Function
Perl | Subroutines or Functions
Perl | ne operator
Use of print() and say() in Perl
Hello World Program in Perl
Perl | Basic Syntax of a Perl Program
Perl | eq operator