> Either quote the meta characters in the search string by enclosing it
> in \Q  \E sequences or quote each meta separtately by preceeding
> it with a \ character, e.g.
>
> s!\Q$search\E!$replace!;
>
> or
>
> @search=split(//,$search);
> foreach $char (@search) {
>     $char="\\$char" if $char=~/\W/;
> }
> $search=join('',@search);

I still couldn't get it to work.  Here is my code so you can see where I am
messing up:

# Get the original record from a hidden field
my $record = $cgi->param('oldval');

# Search the database, and grab the old values for the record to be modified
open (OLD, "$file") or die "Cannot open $file: $!\n";
while (<OLD>){
  $oldline = $_;
 if ($oldline =~ /^$record(.*)$/) {
     ($orig_cat_num, $orig_link, $orig_name, $orig_file, $orig_title,
    $orig_composer, $orig_arranger, $orig_publisher, $orig_price,
    $orig_description) = split(/\:/, $oldline);

    # Store the value of this line in the search variable
    $search = $oldline;
   }
}
# Close the file
close (OLD);

# Grab the new values from the form
$cat_num = $cgi->param('cat_num');
$title = $cgi->param('title');
$composer = $cgi->param('composer');
$arranger = $cgi->param('arranger');
$publisher = $cgi->param('publisher');
$price = $cgi->param('price');
$description = $cgi->param('description');

# Get rid of all the line enders in the description
$description =~ s/\n/\<br\>/g;

my $replace =
"$cat_num:$orig_link:$orig_name:$title:$composer:$arranger:$publisher:$price
:$description\n";

open (OFILE, "< $file") or print "<br>Cannot write the database";
open (TEMP, "> $tmp") or die "Cannot create temp file: $!\n";
select (TEMP);
my $out = '';
# Print all the lines of text from the db file directly into the temp file,
# including the record header we are looking for
while (<OFILE>){
 my $line = $_;
 if ($line =~ /^$record(.*)$/i) {
  chomp $line;
  # Substitute the old values for the new
  $line =~ s!\Q$search\E!$replace!;

  # This still shows the old value!!!
  die "Replacing with $line\n";
  $out .= $_;
  }
 $out .= $_;
}
print TEMP $out;

Now, as I mentioned before, the contents of $line would look like:
../pdf/sax_quartet/BMP0016.pdf:BMP0016.pdf:No baile mas (Dance No
More):Cervantes:O'Briant:Bayside Music Press:$8.00:desc<BR>

Where am I going wrong?

-Erich-

_______________________________________________
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to