Alfred Wong's Programming Showcase
About me Links HTML COBOL Java JavaScript Perl PHP
#!/usr/bin/perl -w                                  # Unix
#!C:\perl\bin\perl                                  # Windows
# http://perl.plover.com/context.html

print "Content-type: text/html\n\n";                # Need blank line after this line!
@list = ('a', 'b', 'c');
print ("0. \@list = @list<br>\n");                  # a b c   List context

print '1. @list = ', @list . "<br><br>\n\n";        # 3       Concatenation creates scalar context

@r = reverse(@list) . "<br>\n";                     #         Concatenation creates scalar context even
print '2. @r = ', @r;                               # cba\n   though putting result into list @r!
print "\$#r =  $#r<br>\n";                          # 0
print '@list = ', @list, "<br><br>\n\n";            # abc     List context, but no spaces

@r = reverse(@list);                                #         List context (@r = cba)
print '3. @r = ', @r, "<br>\n";                     # cba     List context
print "\$#r =  $#r<br>\n";                          # 2
print '@list = ', @list, "<br><br>\n\n";            # abc     List context, but no spaces

$r = @r;
print "4. \$r = $r<br><br>\n\n";                    # 3       Scalar context (@r = @list = abc)

print '5. @list = ', reverse "@list<br>\n";         # a b c   List context; all one element
print "\$#list = $#list<br><br>\n\n";               # 2

print '6. @list = ', reverse @list;                 # cba     Scalar context (@list = abc)
print "<br>\n";
print "\$#list = $#list<br><br>\n\n";               # 2

print '7. @list = ', reverse @list . "<br>\n";      # 3       Concatenation creates scalar context.
print '@list = ', @list, "<br>\n";                  # abc     List context, but no spaces
print "\$#list = $#list<br><br>\n\n";               # 2

print "8. ", scalar(reverse(@list)) . "<br>\n";     # cba     Scalar context. Could omit scalar and
                                                    #         let reverse work in list context.
print '@list = ', @list, "<br>\n";                  # abc     List context, but no spaces
print "\$#list = $#list<br><br>\n\n";               # 2

print "9. ", scalar reverse @list . "\n";           # "\n3"   Concatenation creates scalar context.
                                                    #         Same as reverse (@list . "\n")
print "<br>\n\@list = @list<br>\n";                 # a b c   List context
print "\$#list = $#list<br><br>\n\n";               # 2

print "10. ", scalar (reverse "@list\n");           # "\nc b a"   Scalar context Could omit scalar
                                                    #         and let reverse work in list context.
                                                    #         Same as scalar reverse "@list\n"
print "<br>\n\@list = @list<br>\n";                 # a b c   List context
print "\$#list = $#list<br><br>\n\n";               # 2
© 2004 Alfred Wong