#!/usr/bin/perl use strict; use warnings; my $x = do {for (1 .. 4) {}}; my @x = do {for (1 .. 4) {}}; printf "Scalar return value of for is %s\n", defined $x ? "defined" : "undefined"; printf "Scalar return value of for is %s\n", $x ? "true" : "false"; printf "Scalar return value of for is has length %d\n", length $x; printf "Scalar return value of for is '%s'\n", $x; printf "List return value of for returns %d element\n", scalar @x; printf "List return value of for contains %d undefined elements\n", scalar grep {!defined} @x; printf "List return value of for contains %d true elements\n", scalar grep {$_} @x; printf "List return value of for contains %d elements of non-zero length\n", scalar grep {length} @x; printf "List return value of for equals [%s]\n", join ", ", map {"'$_'"} @x; __END__ Scalar return value of for is defined Scalar return value of for is false Scalar return value of for is has length 0 Scalar return value of for is '' List return value of for returns 1 element List return value of for contains 0 undefined elements List return value of for contains 0 true elements List return value of for contains 0 elements of non-zero length List return value of for equals ['']