Nice, Bob, very elegant indeed!
I do have a question, I notice you use "and" like an if..then. What if you wanted to do two things if that =~ held true? Is that possible? Thanks. - Bryan > Bryan Harris wrote: >> One of my favorite things about perl is that long and tedious >> solutions can often be replaced by incredibly elegant and concise >> ones. >> >> I'm writing a sequence generator. I've got most of it handled, but >> this part bugs me. I want it to take the variable $field containing, >> e.g.: >> >> 4.3:8.3 >> >> And turn it into an array: >> >> 4.3 5.3 6.3 7.3 8.3 >> >> Here's what I've got: >> >> if ($field =~ /^(\S+(\.(\d*))):(\S+(\2))$/) { >> ($a,$b) = ($1,$4); >> while ($a <= $b) { push @vector, $a++; } >> } >> >> I guess it just feels really sloppy, like I should be able to do the >> last two lines in a single map command or something. >> >> Obviously it's not urgent, I just like seeing how the masters do this >> kind of thing. =) > > I don't claim to be a master, but you can do something along the lines of: > > $range = '4.3:8.3'; > $range =~ /(\d+).(\d+).(\d+).\2/ and print map "$_.$2 ", $1 .. $3; > > Since it appears you require that the fractional part be the same for both > ends of the range, I'm just capturing the integer parts and using Perl's > range operator to build the list to feed to map() -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>