Contexto de la llamada

Cuando se llama a una subrutina, es posible detectar si se esperaba un valor escalar, una lista o nada. Estas posibilidades definen tres contextos en los cuales una subrutina puede ser llamada. Por ejemplo:
listdir(@files); # contexto void
$listed = listdir(@files); # contexto escalar
@missing = listdir(@files); # contexto de lista
($f1, $f2) = listdir(@files); # contexto de lista
print (listdir(@files)); # contexto de lista

Esta información puede obtenerse mediante la función wantarray . Esta función devuelve:

Podemos utilizar esta información para seleccionar la información apropiada a utilizar en la sentencia return. El siguiente programa suprime los espacios en blanco al comienzo y al final de la variable:

   1 #!/usr/bin/perl -w
   2 my @many = (" one ", "  two  ", "   three   ");
   3 my $string = "\n\nstring\n\n";
   4 print "string = $string\n";
   5 print "many = (@many)\n";
   6 $string = trim($string);
   7 @many = trim(@many);
   8 print "string = $string\n";
   9 print "many = (@many)\n";
  10 
  11 sub trim {
  12   my @out = @_;
  13 
  14   for (@out) {
  15     s/^\s+//;
  16     s/\s+$//;
  17   }
  18   return wantarray? @out : $out[0];
  19 }
  20
Ejemplo de ejecución:
> trim.pl
string =

string


many = ( one    two      three   )
string = string
many = (one two three)



Subsecciones
Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19