I think the OP is essentially asking (Sixtease please
correct me if I'm wrong) how you would make something like the
following snippet print "e", and not "2"
my @x = qw(a b c);
my @y = qw(d e);
print scalar (@x, @y); # prints "2" (number of elems in @y)
treating the combined arrays as if they had been written like
print scalar qw(a b c d e); # prints "e" (last elem in list)
Kind of like this
print scalar ((@x, @y)[0..@x+@y-1]); # prints "e"
print scalar sub {@_[0..$#_]}->(@x, @y); # prints "e"
but less ugly, and without having to take special care of the
subtle problem you run into with older versions of Perl when the
arrays are empty, and the selecting range for the slice becomes
[0..-1] (what this thread is about, essentially).
Irrespective of whether you'd actually need to do something like
this in real-life programming, it's still a valid question in and of
itself, IMO.
|