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; ( 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 -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/