Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: check if string is valid with special cases

by mr_ron (Chaplain)
on May 15, 2018 at 21:29 UTC ( [id://1214586]=note: print w/replies, xml ) Need Help??


in reply to check if string is valid with special cases

Like most of the other answers I will recommend Text::CSV but with a hopefully helpful explanation. Your question is asking for comma separated fields but a field can also contain a comma (,) enclosed in quotes ("). What about a field that needs to have " characters in it as well? CSV has a standard way of handling all these issues and it is not so easy to do with one regex. What about a,b,c,"",e,f ? Again CSV will just handle it. The use of List::Util suggested by swl makes a good refinement but hopefully the example below is a start:
#!/usr/bin/env perl use Modern::Perl; use Text::CSV; my $csv = Text::CSV->new; my @strings = ( 'a,"b,c",3,4,5,6', 'a,"b,c",3,4,5', 'a,"b,c",3,4,5,""', 'abc,def,"ghi,jkl",,mno,6' ); foreach my $s (@strings) { if (my $status = $csv->parse($s)) { if ( (grep { /\w/ } $csv->fields) != 6 ) { warn "row failed: ", $csv->string } } else { warn $csv->error_input } }
Ron

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2024-03-28 13:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found