PERL TUTORIALS - Perl Subroutines
Perl Subroutines
ADVERTISEMENTS
Define & Call a Subroutine:
sub subroutine_name{ body of the subroutine }ADVERTISEMENTS
&subroutine_name( list of arguments );ADVERTISEMENTS
#!/usr/bin/perl # Function definition sub Hello{ print "Hello, World!\n"; } # Function call &Hello();Passing Arguments to a Subroutine:
#!/usr/bin/perl # Function definition sub Average{ # get total number of arguments passed. $n = scalar(@_); $sum = 0; foreach $item (@_){ $sum += $item; } $average = $sum / $n; print "Average for the given numbers : $average\n"; } # Function call &Average(10, 20, 30);
#!/usr/bin/perl # Function definition sub PrintList{ my @list = @_; print "Given list is @list\n"; } $a = 10; @b = (1, 2, 3, 4); # Function call with list parameter &PrintList($a, @b);
#!/usr/bin/perl # Function definition sub PrintHash{ my (%hash) = @_; foreach $item (%hash){ print "Item : $item\n"; } } %hash = ('name' => 'Tom', 'age' => 19); # Function call with hash parameter &PrintHash(%hash);Returning Value from a Subroutine:
#!/usr/bin/perl # Function definition sub Average{ # get total number of arguments passed. $n = scalar(@_); $sum = 0; foreach $item (@_){ $sum += $item; } $average = $sum / $n; return $average; } # Function call $num = &Average(10, 20, 30); print "Average for the given numbers : $num\n";Private Variables in a Subroutine:
sub somefunc { my $variable; # $variable is invisible outside somefunc() my ($another, @an_array, %a_hash); # declaring many variables at once }
#!/usr/bin/perl # Global variable $string = "Hello, World!"; # Function definition sub PrintHello{ # Private variable for PrintHello function my $string; $string = "Hello, Perl!"; print "Inside the function $string\n"; } # Function call &PrintHello(); print "Outside the function $string\n";Temporary Values via local()
#!/usr/bin/perl # Global variable $string = "Hello, World!"; sub PrintHello{ # Private variable for PrintHello function local $string; $string = "Hello, Perl!"; PrintMe(); print "Inside the function PrintHello $string\n"; } sub PrintMe{ print "Inside the function PrintMe $string\n"; } # Function call &PrintHello(); print "Outside the function $string\n";State Variables via state()
#!/usr/bin/perl use feature 'state'; sub PrintCount{ state $count = 0; # default value print "Value of counter is $count\n"; $count++; } for (1..5){ &PrintCount(); }Subroutine Call Context
my $datestring = localtime( time );
($sec,$min,$hour,$mday,$mon, $year,$wday,$yday,$isdst) = localtime(time);