La función wantarray() en Perl devuelve True si la subrutina que se está ejecutando actualmente espera devolver un valor de lista y false si está buscando un valor escalar.
Sintaxis: wantarray()
Devuelve: verdadero para el valor de la lista y falso para los valores escalares
Ejemplo 1:
#!/usr/bin/perl -w # Subroutine to call wantarray() function sub geeks { return(wantarray() ? ("Geeks", "For", "Geeks") : 1); } # Calling the subroutine # in scalar and array context $value = geeks(); @value = geeks(); # Printing the values in both contexts print("Value in Scalar context: $value\n"); print("Value in List Context: @value");
Producción:
Value in Scalar context: 1 Value in List Context: Geeks For Geeks
Ejemplo 2:
#!/usr/bin/perl -w # Subroutine to call wantarray() function sub geeks { if(wantarray()) { # Addition of two numbers when # wantarray() function is called # in list context $c = $a + $b; } else { # When wantarray() is called # in Scalar context return 1; } } # Driver Code $a = 10; $b = 20; $c = 0; # Calling Subroutine in scalar and list contexts $value = geeks($a, $b); @value = geeks($a, $b); # Printing values in both the contexts print("Value when called in Scalar context: $value\n"); print("Value when called in List Context: @value");
Producción:
Value when called in Scalar context: 1 Value when called in List Context: 30