in reply to Removing a Pattern matched in a Scalar

hey, I assume that you were not able to match the pattern simply because you did not escape the 'special characters', namely the ":"s and the "|"s. If you can escape all the special chars, you'll probably be able to solve this yourself. Sample code that should work for multiple lines like the one you defined into $scalar, only that the "scalar list" would be put into a file which in my case is defined as scalar.txt.
============================================================ use strict; use FileHandle; my $scalar_file = shift @ARGV; chomp($scalar_file); my $scalar_handle = new FileHandle ("$scalar_file") or die "Error:Unab +le to open file $scalar_file\n"; my $scalar; while (defined($scalar = <$scalar_handle>)){ print "Scalar : $scalar\n"; $scalar =~ s"\:\:vegetable\|\|celery""g; print "Changed Sclalar:$scalar\n"; } ============================================================
I would however also suggest that this form of formatting could be cumbersome in complex code. Suggest you switch to arrays/hashes/csv's for data like this.
Wisdom: For every problem there is a solution that is simple, neat and wrong.

Replies are listed 'Best First'.
Re^2: Removing a Pattern matched in a Scalar
by tlm (Prior) on Jul 25, 2005 at 12:25 UTC

    I assume that you were not able to match the pattern simply because you did not escape the 'special characters', namely the ":"s and the "|"s.

    As far as regexes go, there's nothing special about ":"s. E.g.:

    % perl -wle '$x=q(ab::cd); $x=~s/b::c//; print $x' ad

    the lowliest monk