#!/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/