I like Bruce's Regex-based approach. Here's how I'd probably approach the problem:
raku -e 'say [+] @*ARGS.grep(+*)' 0 100 200 300 apples 400oranges 2kilos 18.7876 500 grams14 10stars10 sun100moon 77 August 31, 2020 2:28 PM, "Bruce Gray" <robertbrucegr...@gmail.com> wrote: > my $is_a_number = / ^ \d+ [ '.' \d* ]? $ /; > > my $sum = @*ARGS.grep($is_a_number).sum; > > say $sum; > > — > Hope this helps, > Bruce Gray (Util of PerlMonks) > >> On Aug 31, 2020, at 12:22 PM, William Michels via perl6-users >> <perl6-us...@perl.org> wrote: >> >> I think it looks very good, Radhakrishnan! Presumably you are happy >> with the sum 1195.7876? >> >> ~$ raku -e 'for @*ARGS {.say if ($_.Int // 0) };' 0 100 200 300 apples >> 400oranges 2kilos 18.7876 500 grams14 10stars10 sun100moon 77 >> 100 >> 200 >> 300 >> 18.7876 >> 500 >> 77 >> >> I'm still mulling over whether or not the "!=== 0" is essential. I >> have yet to mess-up the command line arguments sufficiently to require >> it, and throwing a zero onto the command line seems to be handled >> gracefully. >> >> Anyone else want to chime in? >> >> Best, Bill. >> >> On Mon, Aug 31, 2020 at 8:49 AM Radhakrishnan Venkataraman >> <weor...@gmail.com> wrote: >>> Please see the following script that checks for type and sums up only the >>> numbers passed as >>> arguments to the script in the command line. I would be grateful if any >>> improvement or furtherance >>> to this script is offered. Thank you. >>> >>> # >>> # sums the numbers given in command line arguments and prints >>> # >>> my $sum = 0; >>> for @*ARGS >>> { >>> $sum += $_.Rat if $_.Int // 0 !=== 0; >>> } >>> say $sum; >>> >>> # >>> # command line execution >>> # perl6 cla.p6 100 200 300 apples 400oranges 2kilos 18.7876 500 grams14 >>> 10stars10 sun100moon 77 >>> #