in reply to subroutine array question

You're trying to modify read-only values (as Perl has no doubt told you).

Inside your subroutine, @_ contains three values (5, 6 and 7). But they aren't just values, they are the constants 5, 6 and seven. And in the foreach loop, $_ is aliases to each of those constants in turn. So when you try to assign a new value to $_, you are trying to overwrite the value of a constant. Which Perl, very sensibly, prevents you from doing.

What you really want is something like this:

sub circ_area { my @radii = @_; # copies values into a variable foreach (@radii) { $_= 3.14 * ($_**2); } return @radii; }

Or, more Perlishly:

sub circ_area { return map { 3.14 * ($_**2) } @_; }
--
<http://dave.org.uk>

"The first rule of Perl club is you do not talk about Perl club."
-- Chip Salzenberg