perl | Subrutinas o Funciones | Juego – 2

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);
Producción: 

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);
Producción: 

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";
Producció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";
Producció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);
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *