You'll have way fewer problems if you were to think a bit more abstractly. The things you really want to do are:
So make a function for each of them!
sub build_url { my $url = URI->new(shift(@_)); $url->query_form(@_); return $url; } sub text_to_js_lit { my $s = $_[0]; $s =~ s/\\/\\\\/g; $s =~ s/'/\''/g; return "'$s'"; } sub text_to_html_val { my $s = $_[0]; $s =~ s/&/&/g; $s =~ s/</</g; $s =~ s/"/"e;/g; return qq{"$s"}; }
my $url = build_url('/cgi-bin/script.pl', favadd => 'yes', num => '6210', favtitle => "jones's title", favlink => '6210.html', ); my $js_url = 'javascript:popUp(' . text_to_js_lit($url) . ')'; print('<a href=' . text_to_html_val($js_url) . '>');
As for converting text into an SQL string literal, the function already exists as $dbh->quote(). That said, you'd be better off using placeholders as previously mentioned.
In reply to Re: Escaping then un-escaping an apostrophe
by ikegami
in thread Escaping then un-escaping an apostrophe
by htmanning
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |