#!/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