Perl: diferencia entre funciones y subrutinas

En Perl , cuando un script de código aumenta de tamaño, es decir, contiene cientos de líneas de código, se vuelve difícil administrar dicho script de código. Para evitar esta dificultad, Perl proporciona a sus usuarios el concepto de Funciones y subrutinas. Las funciones y subrutinas dividen cantidades complejas/grandes de código en partes más pequeñas y concisas para que el programa sea más legible.

Reducen el tamaño de la aplicación y el tiempo de depuración al permitirnos reutilizar el código que se ha escrito anteriormente en el programa. Las funciones y subrutinas de Perl se utilizan para reutilizar código en un programa. Podemos usar una función en varios lugares de nuestra aplicación con diferentes parámetros.

¿Qué es una función?

Una función es algo que toma una serie de argumentos, hace algo con ellos y luego devuelve un valor. Puede estar integrado en el lenguaje de programación o puede ser proporcionado por el usuario.

En Perl, cuando definimos una función, especificamos el nombre y la secuencia de declaraciones. Más tarde, cuando queramos realizar un cálculo, podemos ‘llamar’ a la función por su nombre, que ejecutará la secuencia de sentencias contenidas en la definición de la función.
Hay muchas funciones integradas en Perl que también son muy útiles. Por ejemplo, ‘decir’ es una función integrada. Perl incluso nos permite construir nuestra propia función que puede ayudarnos a realizar la tarea que queremos hacer.

¿Qué es una subrutina?

Las subrutinas (o sub) nos dan la posibilidad de dar un nombre a la sección del código para que cuando queramos volver a usarla en el programa, podamos usarla simplemente llamando a su nombre.

Las subrutinas nos ayudan a programar en Perl de dos maneras principales:

  • Primero, nos permiten reutilizar el código nuevamente en el programa, lo que facilita la búsqueda y corrección de errores, lo que agiliza la escritura de programas.
  • En segundo lugar, nos permiten fragmentar nuestro código en secciones organizativas. Cada subrutina es responsable de una tarea específica.

En Perl, hay dos casos en los que se coloca un fragmento de código en la subrutina:

  • Cuando sabemos que el código se usará para el cálculo o la acción, eso sucederá más de una vez. Por ejemplo, al poner un fuerte en un formato específico o al convertir un registro de datos entrantes en un hash, etc.
  • Cuando hay unidades lógicas de nuestro programa que queremos romper en pedazos para que nuestro programa sea más fácil de entender.

A continuación se muestra una tabla de diferencias entre una Función y una Subrutina:

FUNCIÓN SUBRUTINA

El formato básico de una función es:

$mivalor = mifuncion(parámetro, parámetro);

El formato básico de la subrutina es:

sub nombre_subrutina

{

   # cuerpo de la subrutina

}

Una función en Perl significa algo integrado en Perl. La principal documentación de referencia para las funciones integradas de Perl se llama perlfunc. Una subrutina en Perl es una sección de código que puede tomar argumentos, realizar algunas operaciones con ellos y puede devolver un valor significativo, pero no necesariamente. Sin embargo, siempre son definidos por el usuario en lugar de integrados.
Las funciones nos las proporciona Perl. Las subrutinas son fragmentos de código que proporcionamos a Perl.
Las funciones son similares a las subrutinas, excepto que devuelven un valor. 
Una función comúnmente realiza algunos cálculos e informa el resultado a la persona que llama.
 Las subrutinas realizan una tarea pero no informan nada al programa que llama.
Una función no puede cambiar el valor de los argumentos reales. Una subrutina puede cambiar el valor del argumento actual.
Una función tiene una salida determinista y no tiene efectos secundarios.
 
Una subrutina no tiene tales restricciones.

Un programa de muestra para invertir una string usando una función y una subrutina:

Function

#!/usr/bin/perl
# Perl program to reverse a string
# using pre-defined function
  
# Creating a string
$string = "GeeksForGeeks"; 
print "Original string: $string", "\n";
print "Reversed string: "; 
  
# Calling pre-defined function
print scalar reverse("$string"), "\n";

Subroutine

#!/usr/bin/perl
# Perl program to reverse a string
# using a subroutine
  
# Creating a string
my $string = 'GeeksforGeeks';
  
print 'Original string: ', $string, "\n";
print 'Reversed using Subroutine: ', 
    reverse_in_place($string), "\n";
  
# Creating a subroutine
sub reverse_in_place
{
    my ($string) = @_;
    my @array = split //, $string;
    my $n = scalar @array;
  
    for (0 .. $n / 2 - 1)
    {
        my $tmp    = $array[$_];
        $array[$_] = $array[$n - $_ - 1];
        $array[$n - $_ - 1] = $tmp;
    }
    return join('', @array);
}
Producción:

Original string: GeeksforGeeks
Reversed using Subroutine:  skeeGrofskeeG

Publicación traducida automáticamente

Artículo escrito por vishalraina 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 *