#!/usr/bin/perl -w use strict; sub fixn($) { my $str = "@_"; $str =~ s/[^a-zA-Z0-9^_\-\\`\.\[\]\{\}~]//g; return $str; } sub fixn2 { # no prototype needed my $str = shift; # since we only ever want 1 argument # which will be converted to a string # if needed anyway. $str =~ s/[^a-zA-Z0-9^_\-\\`\.\[\]\{\}~]//g; return $str; } my $input = 'a b \\ c d'; print "input='$input'\n"; my $myvar = fixn($input); print "myvar='$myvar'\n"; my $better = fixn2($input); print "better='$better'\n"; #### input='a b \ c d' myvar='ab\cd' better='ab\cd' #### $var = "bla[abc]\\t"; # $var contains bla[abc]\t /$var/; # is equivalent to /bla[abc]\t/ /\Q$var\E/; # is equivalent to /bla\[abc\]\\t/