use strict; use warnings; use feature 'say'; use Scalar::Util 'looks_like_number'; say "Please input numbers to be summed. Crtl-D to stop"; my $user_input; while ( ) { $user_input .= $_; } total( $user_input ); sub total { my $in = shift or die 'No numbers provided!'; my $user_total = 0; for my $line ( split "/n", $in ) { chomp $line; for my $num ( split /\W+/, $line ) { die "$num doesn't look like a number!" if not looks_like_number( $num ); $user_total += $num; } } say "Total: $user_total"; } __END__