How can I split a string by whitespace unless inside of a single quoted string?

后端 未结 3 936
无人共我
无人共我 2020-12-19 13:07

I\'m seeking a solution to splitting a string which contains text in the following format:

\"abcd efgh \'ijklm no pqrs\' tuv\"

which will p

3条回答
  •  感动是毒
    2020-12-19 13:28

    use strict; use warnings;
    
    my $text = "abcd efgh 'ijklm no pqrs' tuv 'xwyz 1234 9999' 'blah'";
    my @out;
    
    my @parts = split /'/, $text;
    
    for ( my $i = 1; $i < $#parts; $i += 2 ) {
        push @out, split( /\s+/, $parts[$i - 1] ), $parts[$i];
    }
    
    push @out, $parts[-1];
    
    use Data::Dumper;
    print Dumper \@out;
    

提交回复
热议问题