Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: split string using regex

by duff (Vicar)
on Nov 08, 2007 at 14:51 UTC ( #649723=note: print w/replies, xml ) Need Help??

in reply to split string using regex

You have two sets of parentheses in your regular expression that are mutally exclusive. Perl is putting the contents of both $1 and $2 into your array. Since one of those will be undef, perl complains. Rewrite your RE such that there is only one set of parentheses or be sure to discard the undefs.

Update: here's one possibility:

#!/usr/bin/perl use strict; use warnings; my $inp = 'AAA * BBB CCC * * "2000 01 00 00 00" "2004 01 00 00 00"'; my @r = $inp =~ /("[^"]*"|\S+)/g; s/\A"(.*?)"\z/$1/ for @r; $, = "\n"; print @r, "\n";

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://649723]
[kcott]: s/imput/input/
[Corion]: DateTime::Duration ? Personally,I convert stuff to seconds using Time::Piece or Time::Local and then add the seconds and then use POSIX::strftime to print them as hours again
[marto]: good morning all, TCIF
[gnosti]: I'm reading from ffmpeg lengths of video clips in H:M:S and needing to add them and format them back to H:M:S for feeding back to ffmpeg
[marioroy]: kcott Thanks
[Corion]: gnosti: I would cheat and use my approach instead of dealing with durations as objects, or a module
[Corion]: You could even do the calculation directly - my $duration = $H * 3600+ $M*60 + $S; strftime '%H:%M:%S', timelocal($duratio n)
[Corion]: (and that strftime call is largely superfluous too, converting back to H:M:S isn't hard either)

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (9)
As of 2017-08-18 09:00 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (297 votes). Check out past polls.