I am having problems with one of my regexp substitutions not matching the first line
returned in a set, and I'm having trouble figuring out why. I figure there's probably
a hidden system character or something of the sort that is causing my regexp to fail.
Here's the scenario:
I'm forking off children from a parent, calling a remote script in each child. The
remote script sends its results to STDOUT, which I'm capturing via pipes. The data
from each child needs to be kept separate, so I'm prepending a tag to each line before
printing to STDOUT ($servers[$c] spits out the server name):
print "%%%%" . $servers[$c] . "%%%%" . $_;
Output from all children is captured into an array, and then split out into arrays
based on each server name, removing the custom tag ($1 is the server name):
while(<READER>) {
if ($_ =~ s/^%%%%(\w+)%%%%//) {
push @{$1}, $_;
}
}
I then proceed to format my output and print results on a per-server basis. The
problem is that it appears that the first line returned to the parent array does not
match my substitution regexp above, and the custom tag remains in place.
Additionally, this only happens when more than one child process is spawned - with
just one child, it works fine. Reading what I just wrote, maybe it's the first line
returned from children finishing 2nd or later.
If I change the substitution regexp to:
if ($_ =~ s/^.*%%%%(\w+)%%%%//)
everything works perfectly. The only thing I can think of is that some system
character is hiding between the ^ and my custom tag, but I can't seem to figure out
what it is. Is there a way I can view system characters in a variable?
Probably not the best explanation, but hopefully that all makes sense. Any input as
to what the issue might be, or how I might idendify or fix it?
Thanks.
Jason
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>