Requisito previo: subrutinas o funciones en Perl
Una función o subrutina de Perl es un grupo de sentencias que juntas realizan una tarea específica. En cada lenguaje de programación, el usuario quiere reutilizar el código. Entonces, el usuario pone la sección de código en función o subrutina para que no haya necesidad de escribir código una y otra vez. En este artículo hablaremos de los siguientes conceptos:
- Pasar hashes a subrutinas
- Pasar listas a subrutinas
- Devolver valor de una subrutina
- Variables locales y globales en subrutinas
- Número diferente de parámetros en la llamada de subrutina
Pasar hashes a subrutinas: un hash también se puede pasar a subrutinas que se convierten automáticamente en su par clave-valor.
Ejemplo:
Perl
# Perl program to demonstrate the # passing of hash to subroutines #!/usr/bin/perl # Subroutine definition sub Display_hash { # hash variable to store # the passed arguments my (%hash_var) = @_; # to display the passed list elements foreach my $key (keys %hash_var ) { my $val = $hash_var{$key}; print "$key : $val\n"; } } # defining hash %hash_para = ('Subject' => 'Perl', 'Marks' => 97); # calling Subroutine with hash parameter Display_hash(%hash_para);
Marks : 97 Subject : Perl
Pasar listas a subrutinas: como sabemos, @_ es una variable de array especial dentro de una función o subrutina, por lo que se usa para pasar las listas a la subrutina. Perl tiene una forma diferente de aceptar y analizar arrays y listas que dificultan la extracción del elemento discreto de @_ . Para pasar una lista junto con otros argumentos escalares, es necesario hacer la lista como último argumento.
Ejemplo:
Perl
# Perl program to demonstrate the # passing of lists to subroutines #!/usr/bin/perl # Subroutine definition sub Display_List { # array variable to store # the passed arguments my @para_list = @_; # to print the passed list elements print "Given list is @para_list\n"; } # passing scalar argument $sc = 100; # passing list @li = (10, 20, 30, 40); # Calling Subroutine with scalar # and list parameter Display_List($sc, @li);
Given list is 100 10 20 30 40
Devolver valor de una subrutina: una subrutina también puede devolver un valor como en otros lenguajes de programación como C, C++, Java, etc. Si el usuario no devolverá un valor de la subrutina manualmente, la subrutina devolverá un valor automáticamente. En este, el valor devuelto automáticamente será el último cálculo ejecutado en la subrutina. El valor devuelto puede ser escalar, array o hash.
Ejemplo:
Perl
# Perl Program to demonstrate the # returning values subroutine #!/usr/bin/perl # subroutine definition sub Sum { # To get total number # of parameters passed. $num = scalar(@_); $s = 0; foreach $i (@_) { $s += $i; } # returning sum return $s; } # subroutine calling and storing result $result = Sum(30, 2, 40); # displaying the result print "Sum of the given numbers : $result\n";
Sum of the given numbers : 72
Variables locales y globales en subrutinas: Todas las variables dentro de un programa Perl son variables globales por defecto. Pero con la ayuda de mi palabra clave, puede crear las variables locales o privadas dentro de un bloque. Una variable privada tiene un alcance limitado, como entre el bloque (if, while, for, foreach, etc.) y los métodos, etc. Fuera del bloque o método , estas variables no se pueden usar.
Ejemplo:
Perl
# Perl program to demonstrate the Local # and Global variables in subroutine #!/usr/bin/perl # A Global variable $str = "GeeksforGeeks"; # subroutine definition sub Geeks { # Private variable by using my # keyword for Geeks function my $str; $str = "GFG"; print "Inside the Subroutine: $str\n"; } # Calling Subroutine Geeks(); print "Outside the Subroutine: $str\n";
Inside the Subroutine: GFG Outside the Subroutine: GeeksforGeeks
Diferente número de parámetros en la llamada a la subrutina: Perl no nos proporciona ninguna función integrada para declarar los parámetros de una subrutina, lo que hace que sea muy fácil pasar cualquier número de parámetros a una función.
Ejemplo:
Perl
# Perl program to demonstrate the variable # number of parameters to the subroutine #!/usr/bin/perl use strict; use warnings; # defining subroutine sub Multiplication { # private variable containing # default value as 1 my $mul = 1; foreach my $val (@_) { $mul *= $val; } return $mul; } # Calling subroutine with 4 parameters print Multiplication(8, 2, 3, 4); print "\n"; # Calling subroutine again but # with 3 parameters print Multiplication(3, 5, 4);
192 60
Nota: Generalmente, pasar más de una array o hash como parámetros a las subrutinas hace que pierdan sus identidades separadas. Del mismo modo, devolver más de una array o hash de la subrutina también provoca la pérdida de sus identidades separadas. Podemos resolver estos problemas usando referencias.
Publicación traducida automáticamente
Artículo escrito por Akashkumar17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA