It is a bit tricky. Just tried it and Perl warned: The string is: The black cat is. Can't do {n,m} with n > m in regex; marked by <-- HERE in m/ \A ( .{19,18} <-- HERE ?\s+ \b ) / at substr.pl line 10.
My strings are not fixed length, but I do they are normally longer that the offset I used, so I should be fine I think. Mimi -----Original Message----- From: John W. Krahn [mailto:jwkr...@shaw.ca] Sent: 18 April 2010 17:03 To: Perl Beginners Subject: Re: Extract substring from offset to space or full stop Mimi Cafe wrote: > I used MySQL substr function to extra 100 characters from the result of a > query, but understandably, I don't get what I want. > > Now I looked at Perl's substr function and it doesn't look like it can help > me achieve what I need to. > > Let's say I have: > > $s = "The black cat climbed the green tree"; > > $substring = substr( $s, 1, 15); # this will return "The black cat c". No it will not. It will return "he black cat cl" because in perl offsets start at 0 and not 1: $ perl -le' my $s = "The black cat climbed the green tree"; my $substring = substr( $s, 1, 15 ); print $substring; ' he black cat cl > How can I have this return the whole word climbed rather than the c (i.e. I > need to get "The black cat climbed")? I need to get the remaining characters > from the length till the next white space or end of a phrase. > > Any other way to overcome this limitation? How can I use regex here? $ perl -le' my $s = "The black cat climbed the green tree"; my $length = length $s; my ( $substring ) = $s =~ / \A ( .{15,$length}? \b ) /x; print $substring; ' The black cat climbed John -- The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. -- Damian Conway -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/ -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/