Requisito previo: Perl | Subrutinas o Funciones
Una función o subrutina de Perl es un grupo de sentencias que juntas realizan una tarea específica. En todos los lenguajes de programación, el usuario quiere reutilizar el código. Entonces, el usuario coloca la sección de código en una función o subrutina para que no haya necesidad de volver a escribir el mismo código una y otra vez. Por esta razón, la función o subrutina se usa en todos los lenguajes de programación. Estas funciones o subrutinas pueden tomar varios tipos diferentes de estructuras de datos como parámetros. Algunos de estos se explican a continuación:
- Pasar listas o arreglos a una subrutina
- Pasar referencias a una subrutina
- Pasar hashes a una subrutina
- Pasar identificadores de archivo a una subrutina
Pasar listas o arrays a una subrutina: se puede pasar una array o una lista a la subrutina como un parámetro y se usa una variable de array @_ para aceptar el valor de la lista dentro de la subrutina o función.
Ejemplo 1: Aquí se pasa una sola lista a la subrutina y se muestran sus elementos.
#!/usr/bin/perl # Defining Subroutine sub Display_List { # array variable to store # the passed arguments my @List1 = @_; # Printing the passed list elements print "Given list is @List1\n"; } # Driver Code # passing list @list = (1, 2, 3, 4); # Calling Subroutine with # list parameter Display_List(@list);
Given list is 1 2 3 4
Ejemplo 2: Aquí se pasan dos listas a la subrutina y se muestran sus elementos.
#!/usr/bin/perl # Defining Subroutine sub Display_List { # array variable to store # the passed arguments my @List3 = @_; # Printing the passed lists' elements print "Given lists' elements are @List3\n"; } # Driver Code # passing lists @List1 = (1, 2, 3, 4); @List2 = (10, 20, 30, 40); # Calling Subroutine with # list parameters Display_List(@List1, @List2);
Given lists' elements are 1 2 3 4 10 20 30 40
Ejemplo 3: Aquí se pasa un argumento escalar y una lista a la subrutina y se muestran sus elementos.
#!/usr/bin/perl # Defining Subroutine sub Display_List { # array variable to store # the passed arguments my @List2 = @_; # Printing the passed list and scalar elements print "List and scalar elements are @List2\n"; } # Driver Code # passing lists @List = (1, 2, 3, 4); # passing scalar argument $scalar = 100; # Calling Subroutine with # list parameters Display_List(@List, $scalar);
List and scalar elements are 1 2 3 4 100
Pasar referencias a una subrutina: las referencias también se pueden pasar a las subrutinas como un parámetro. Aquí, la referencia de la array dada se pasa a la subrutina y se devuelve el valor máximo de los elementos de la array.
Ejemplo:
#!/usr/bin/perl use warnings; use strict; # Creating an array of some elements my @Array = (10, 20, 30, 40, 50); # Making reference of the above array # and calling the subroutine with # reference of the array as the parameter my $m = max(\@Array); # Defining subroutine sub max { # Getting the array elements my $Array_ref = $_[0]; my $k = $Array_ref->[0]; # Iterating over each element of the # array and finding maximum value for(@$Array_ref) { $k = $_ if($k < $_); } print "The max of @Array is $k\n"; }
The max of 10 20 30 40 50 is 50
Pasar hash a una subrutina: también se puede pasar un hash a una subrutina como parámetro y se muestra su par clave- valor .
Ejemplo:
#!/usr/bin/perl # Subroutine definition sub Display_Hash { # Hash variable to store # the passed arguments my (%Hash_var) = @_; # Displaying the passed list elements foreach my $key (keys %Hash_var) { my $value = $Hash_var{$key}; print "$key : $value\n"; } } # Driver Code # defining hash %Hash = ('Company' => 'GeeksforGeeks', 'Location' => 'Noida'); # calling Subroutine with hash parameter Display_Hash(%Hash);
Company : GeeksforGeeks Location : Noida
Pasar identificadores de archivo a una subrutina: para crear un archivo o acceder al contenido del archivo, se necesita un identificador de archivo que no es más que una estructura que se usa junto con los operadores para acceder al archivo en un modo determinado, como lectura, escritura, adición, etc. FileHandles también se puede pasar a una subrutina como parámetro para realizar varias operaciones en archivos.
En el siguiente ejemplo, se pasa un identificador de archivo a una subrutina: –
Ejemplo:
#!/usr/bin/perl sub printem { my $file = shift; while (<$file>) { print; } } open(fh, "Hello.txt") or die "File '$filename' can't be opened"; printem *fh;
Publicación traducida automáticamente
Artículo escrito por Kanchan_Ray y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA