Team LiB   Previous Section   Next Section

Perl Contexts: Void, Scalar, List, and Boolean

There are three main lvalue (left-hand value) contexts in Perl; void context, scalar context, and list context. They typically operate when subroutines are called or when an lvalue assignment is made:

localtime(  );               # Step 1: Void context, nothing returned
  
$this_time = localtime(  );  # Step 2: Scalar context, scalar returned
print "$this_time \n";
  
@array_time = localtime(  ); # Step 3: Array (or list) context, array
print "@array_time \n";    #         returned.

This code produces:

Wed Mar  6 22:40:40 2002
40 40 22 6 2 102 3 64 0

Let's look at the three contexts illustrated here.

Void

In void context the localtime( ) function fails to return anything. Otherwise Perl uses a built-in wantarray operator in the background to return whether the function is supposed to return a scalar value or an array list.

Scalar

When the lvalue is a scalar, as with $this_time, we know a scalar is required, so localtime( ) supplies us with a single string of information:

Wed Mar  6 22:40:40 2002

List

In our last code line, wantarray tells us that an array is required in list context, so localtime( ) gives us an array of different time-based variables supplying seconds, minutes, hours, day of the month, month, number of years since 1900, the weekday, the day of the year, and a daylight savings time flag:

40 40 22 6 2 102 3 64 0

Boolean

There is no boolean variable type in Perl, just Boolean context. In essence, if a scalar is a string and it is either empty "", or set to "0", then it is interpreted as false. If it is numeric and 0 or 0.0, it is interpreted as false. Absolutely everything else, except the special undef value, is interpreted as true. (This can go against the grain for shell programmers, where 0 is true and everything else is false, but is natural for C programmers from the ol' country.)

    Team LiB   Previous Section   Next Section