On Mon, 2008-09-01 at 11:40 -0400, Mr. Shawn H. Corey wrote:
> On Mon, 2008-09-01 at 15:46 +0200, Paolo Gianrossi wrote:
> > First of all thank you (and all the others ;) for answering
> >
> > This looks more hairy than I think it should...
> >
> > Since I think I omitted some constraints I have, let me try to explain
> > my issue a tiny bit better.
> >
> > What I would like to do is the following. I have a text file which I
> > slurp. Its contents are in $content.
> >
> > Now I want to ask the user for a regex (any regex) and highlight where
> > (if) it matches.
> >
> > If I try to hard cable the whole thing, it works just fine:
> >
> > use strict;
> > use warnings;
> > use diagnostics;
> >
> > my $text="this is a random text. Please match random string.\nAnother
> > random something.\n";
> >
> > while ($text =~ s/random/final/){ #here it is hard-coded
> > my $l=length($`);
> > print substr($text, 0, $l);
> > print ">";
> > print substr($text, $l);
> > }
> >
> > This behaviour is just what I want. Only, I'd like to ask for the regexp
> > to the user:
> >
> > use strict;
> > use warnings;
> > use diagnostics;
> >
> > my $text="this is a random text. Please match random string.\nAnother
> > random something.\n";
> >
> > my $rexp=<STDIN>;
>
> chomp( $rexp );
> # I take it that you want $rexp to be
> # of the form: s/random/final/
> my $replacement = '';
> if( $rexp =~ /^s(.)/ ){
> my $delimiter = $1;
# Oops, make this:
my $delimiter = quotemeta( $1 );
> ( undef, $rexp, $replacement ) = split /$delimiter/, $rexp;
> }else{
> die "badly formatted substitution: $rexp";
> }
>
> > while ($text =~ $rexp){ #here it isn't hardcoded anymore.
>
> while( $text =~ s/$rexp/$replacement/g ){
>
> > my $l=length($`);
> > print substr($text, 0, $l);
> > print ">";
> > print substr($text, $l);
> > }
> >
> > Of course this works not.
> >
> > Also, though,
> >
> > ...
> > while (eval{$text =~ $rexp}){ # try to evaluate this, but not in the
> > # proper way
> > my $l=length($`);
> > print substr($text, 0, $l);
> > print ">";
> > print substr($text, $l);
> > }
> >
> > doesn't work. eval{$text =~ $rexp} is always undef. Now, this puzzles
> > me, but whatever. My major point is that perldoc perlvar tells me that
> > $` and friends are dynamically local to the eval block, so I am no game.
> >
> > Any clue about how to solve this?
> >
> > thanks a lot again for any help :)
> > > Also see:
> > >
> > > perldoc -q "How can I expand variables in text strings?"
> >
> > oh btw, didn't know about -q... That's something cool!
>
> `perldoc -q` searches only the FAQ. See http://perldoc.perl.org/ for
> search engine that searches all of the perldoc's. Make sure it is
> searching the correct version; to see what version of Perl you are
> running, enter:
>
> perl -v
>
>
> --
> Just my 0.00000002 million dollars worth,
> Shawn
>
> "Where there's duct tape, there's hope."
> Cross Time Cafe
>
> "Perl is the duct tape of the Internet."
> Hassan Schroeder, Sun's first webmaster
>
>
--
Just my 0.00000002 million dollars worth,
Shawn
"Where there's duct tape, there's hope."
Cross Time Cafe
"Perl is the duct tape of the Internet."
Hassan Schroeder, Sun's first webmaster
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/