in reply to Re^2: Extraction of numbers in an string
in thread Extraction of numbers in an string

Still fairly simple with split:

#!/usr/bin/perl -l # http://perlmonks.org/?node_id=1176478 use strict; use warnings; my $string = '<1,22>:<5,7>:<333,0>'; my @x = grep /\d/, split /\D+/, $string; print for @x;

Replies are listed 'Best First'.
Re^4: Extraction of numbers in an string
by Not_a_Number (Prior) on Nov 25, 2016 at 20:20 UTC

    Even simpler: no need for grep.

    my @x = split /\D+/, $string;

    Update: tybalt89 and AnomalousMonk are both right, of course. My bad :(

      Nope

      #!/usr/bin/perl -l # http://perlmonks.org/?node_id=1176478 use strict; use warnings; my $string = '<1,22>:<5,7>:<333,0>'; my @x = split /\D+/, $string; print /\d/ ? $_ : 'empty string' for @x;

      prints

      empty string 1 22 5 7 333 0

      But without some sort of grep step, that produces a spurious leading empty string in the output list:

      c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "my $string = '<1,22>:<5,7>:<333,0>'; my @x = split /\D+/, $string; dd \@x; " ["", 1, 22, 5, 7, 333, 0]


      Give a man a fish:  <%-{-{-{-<

Re^4: Extraction of numbers in an string
by AnomalousMonk (Archbishop) on Nov 25, 2016 at 20:52 UTC

    Aha! A short, sweet split pattern++. I never thought of that one. But I still prefer  m{ \d+ }xmsg extraction.


    Give a man a fish:  <%-{-{-{-<