in reply to warning using a regexp

Others have mentioned quoting the - so you don't get a false range. What is happening is this (I realize I am probably beating a dead horse by this time), anything within the [] is part of a character class and so if you put something like [a-z], the regex engine will interpret this as anything from a to z (e.g, a,b,c,d,e,f,g), in order to save the progammer some work (i.e. having to type each and ever character). So what you end up needing to do is escape the "-" if you want it as part of your character class, so it is not misiterpreted as a range between the character on its left and the one on its right. Alternatively, if the "-" is the first or last thing in your square brackets then it will also be taken as part of that class, as the regex engine realizes that its position cannot possibly be interpreted as part of a class range. for example:
$params{city} =~ /^[-\w'\.\*]*$/ and do_stuff() ;
or
$params{city} =~ /^[\w'\.\*-]*$/ and do_stuff() ;

-enlil