It's important to note that arrays and lists are not equivalent. With regards to
(caller 0)[3] and (localtime)[5]+1900 the parentheses are forcing the evaluation of the list like an array. Lists, which are usually diagramed as
(LIST) in Perl can be subscripted like a normal array. However, to do so the a slice syntax is used, which takes the form
@result/$result = ( LIST ) [ LIST ];. The parens are used to avoid ambiguity. Merlyn could further clarify.
Thus,
my $scalar= ( EXPR )[0];
is the rough equivalent of:
my $scalar;
{
my @expr = EXPR();
$scalar = @expr[0]; # or $expr[0];
}