Lets refactor that to be a little more Perl idiomatic:

################################################### # # # 2/24/21 # # Program takes finds the average in an # # array and lists out the numbers that were # # above the average found. # # # ################################################### use strict; use warnings; my @numbers = qw(4 12 18 21 35); my $average = find_average(@numbers); my @high_avg = above_average($average, @numbers); print <<STR; The average found for this list is: $average The numbers that were found above average are: @high_avg STR sub find_average { die "find_average expects to be passed a list of numbers" if !@_; my $sum = 0; $sum += $_ for @_; return $sum / @_; } sub above_average { my ($average_num, @values) = @_; return grep {$_ > $average_num} @values; }

Prints:

The average found for this list is: 18 The numbers that were found above average are: 21 35

First note the use of strictures (use strict; use warnings;). Always use strictures.

Then notice that subs are called without & in modern Perl. There are nasty subtle traps using & to call subs, so don't do that.

Use grep to select elements from a list.

Use here docs for outputting large blocks of text.

Use Statement Modifiers for very simple conditional statements or loops.

Return simple results directly rather than assigning them to an intermediate variable, but always use return to make it clear what is returned from the sub.

Assigning a list or array to a scalar (something that has $ at the front) assigns the count of elements so you can use that directly instead of counting the elements as they are processed.

Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond

In reply to Re: Passing Variables by GrandFather
in thread Passing Variables by catfish1116

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.