in reply to Illegal division by zero
You can also split the detection of WINDSOR RIVER from the extraction on the values. Here is my way ...
#!usr/bin/perl use strict; use warnings; use List::Util qw(sum); my @windsordigits; while (my $x = <DATA>){ next unless $x =~ /WINDSOR\sRIVERSIDE/; push @windsordigits, +(split /,/, $x)[-1]; } die "No 'Windsor digits found in input\n" unless @windsordigits; my $average = sum(@windsordigits) / @windsordigits; print "Average is: $average\n"; __DATA__ CA006139520,"WINDSOR RIVERSIDE, ON CA",2018-01-02,10 CA006139520,"WINDSOR RIVERSIDE, ON CA",2018-01-02,20 CA006139520,"WINDSOR RIVERSIDE, ON CA",2018-01-02,14 CA006139520,"WINDSOR DRIVE, ON CA",2018-01-02,10
I use a regex to match, then if we matched in the regex, split the line on the , character and take the last element or the resulting list using the [-1] offset.
Update
Added a die if no digits are detected in the input.Cheers,
R.
Pereant, qui ante nos nostra dixerunt!
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Illegal division by zero
by drose2211 (Sexton) on Jan 24, 2018 at 17:27 UTC | |
by roboticus (Chancellor) on Jan 24, 2018 at 18:28 UTC | |
by AnomalousMonk (Archbishop) on Jan 24, 2018 at 19:57 UTC |
In Section
Seekers of Perl Wisdom