Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Array Filter and Lookahead

by AnomalousMonk (Abbot)
on Nov 20, 2012 at 19:51 UTC ( #1004783=note: print w/ replies, xml ) Need Help??


in reply to Re: Array Filter and Lookahead
in thread Array Filter and Lookahead

The solutions you propose have various problems:

  • handling a number like 3.0, of which daugh016 seems to want to capture only the integer portion;
  • handling 0;
  • and the problem of having capture variables undefined if a match fails (or else having the value of these variables persist from a previous match).

Here is a possible solution avoiding those problems:

>perl -wMstrict -le "my @test = ( 'text text text 1 text', '1 text text text 2 text 3 ', 'text 1 text text 2 text', 'text text text 1 text 2 3.0', '1 2 3 4 5 6 7 8 9 10 11', 'text 0', 'text 3.1', 'text text text text', ); ;; 'Zonk' =~ m{ (\w+) }xms; ;; my @filtered = map {/(\d+)(?:\.0*)?\D*$/; $1} @test; printf qq{'$_' } for @filtered; print qq{\n}; ;; @filtered = map {/(\d+(?:\.\d*)?)\D*$/; 0 + $1 || ''} @test; printf qq{'$_' } for @filtered; print qq{\n}; ;; @filtered = map { m{ (\d+) (?: [.] \d*)? \D* \z }xms ? $1 : '' } @test ; printf qq{'$_' } for @filtered; print qq{\n}; " '1' '3' '2' '3' '11' '0' '1' 'Zonk' Argument "Zonk" isn't numeric in addition (+) at -e line 1. '1' '3' '2' '3' '11' '' '3.1' '' '1' '3' '2' '3' '11' '0' '3' ''


Comment on Re^2: Array Filter and Lookahead
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1004783]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2015-07-01 23:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (25 votes), past polls