I've been quiet for a while, so I figured I'd ask a regex question.  I got
help initially from this list.  Here is my problem:

This regex almost works correctly.  The idea is to take a long string and
break it into pieces of maximum $lineLen long.  But, it must only break on
whitespace.  Then print each piece.  It works perfect if the string ends in
whitespace.  But not so good otherwise:

#!/usr/bin/perl -w
use strict;

my $lineLen = 20;
my %s;

$s{1}= "If you supply a backup directory and a saveQty, ".
      "you must also supply a pattern to match against. The pattern ".
      "is the same as you'd use in an 'ls' command, if you were to ".
      "generate a list of directories. ";

$s{2}= "If you supply a backup directory and a saveQty, ".
      "you must also supply a pattern to match against. The pattern ".
      "is the same as you'd use in an 'ls' command, if you were to ".
      "generate a list of directories.";

my $str = $s{$ARGV[0]};

foreach my $chunk ($str =~ m/\G(.{1,$lineLen})\s+/gso) {
   print $chunk,"\n";
}

print "\n***right hand stuff: ",$',"\n";

__END__


Notice how the second run leaves stuff in the right hand side of the match.
I can't seem to get it to work.  I can fix it by evaluating the $' var but
I'd prefer not to use
that memory var (cause this code sits in a common package).

[o817]/home/jstrauss/bin> tmp 1
If you supply a
backup directory and
a saveQty, you must
also supply a
pattern to match
against. The pattern
is the same as you'd
use in an 'ls'
command, if you were
to generate a list
of directories.

***right hand stuff:

[o817]/home/jstrauss/bin> tmp 2
If you supply a
backup directory and
a saveQty, you must
also supply a
pattern to match
against. The pattern
is the same as you'd
use in an 'ls'
command, if you were
to generate a list
of

***right hand stuff: directories.

Thanks
As always
Jay



Jay Strauss
[EMAIL PROTECTED]


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

Reply via email to