You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
Plaintext
59 lines
1.3 KiB
Plaintext
# The reserved word 'sub' defines a subroutine.
|
|
|
|
# Basic subroutine with on parameter:
|
|
sub mysub {
|
|
my $param = shift;
|
|
#
|
|
# Do stuff here
|
|
return $myvalue
|
|
}
|
|
$x = mysub( "value" )
|
|
|
|
# Named parameters to subroutines:
|
|
sub named_params_example {
|
|
my ( $arg ) = @_;
|
|
# Use my ( $self, $arg ) = @_; if you are in object land.
|
|
#
|
|
say $arg->{one};
|
|
say $arg->{two};
|
|
}
|
|
#
|
|
# Calling the above subroutine:
|
|
named_params_example({
|
|
one => "First argument",
|
|
two => "Second argument"
|
|
});
|
|
|
|
# Named parameters with default values:
|
|
sub named_params_with_defaults {
|
|
my ( $arg ) = @_;
|
|
# Use my ( $self, $arg ) = @_; if you are in object land.
|
|
#
|
|
# Set defaults
|
|
# If option given Use options Else
|
|
my $one = exists $arg->{one} ? $arg->{one} : "default1";
|
|
my $two = exists $arg->{two} ? $arg->{two} : "default2";
|
|
}
|
|
#
|
|
named_params_with_defaults({ one => "override arg 'one'" });
|
|
|
|
# Return named params from a subroutine:
|
|
sub foo {
|
|
my $clause = 'This is a clause';
|
|
my @param = qw/ one two thee /;
|
|
return ({
|
|
clause => $clause,
|
|
params => \@param
|
|
});
|
|
}
|
|
#
|
|
my $r = foo();
|
|
#
|
|
say "clause = [$r->{clause}]";
|
|
for my $p ( @{ $r->{params} } ) {
|
|
say "param = [$p]";
|
|
}
|
|
|
|
# More help with Perl's fabulous perldoc command:
|
|
perldoc sub
|