перл кто нить помнит? =)

Такая задача скачать страничку и сохранить на диск.

Проблемы с сохранением на диск, когда в имени файла есть ?&; итп.
Первоначальный вариант

if (open(CONTENT,">$dir$file")){
                print CONTENT $content;
                close CONTENT;
}

когда имя файла вот такое то не удается сохранить =(((
$file = index.php?option=com_banners&task=click&bid=5;

Пробую из командной строки получается...
Пробую ручками поставить "\" перед специальными символами -- победа, сохраняется.

ПРобую регулярными выражениями поставить "\" так:

$file=~ s/([\&;\`'\\\|"~<>\$])/\\$1/g;

Не создает файл!!!

Доп инфо:

  DB<6> print $file
localhost/index.php?option=com_content\&\;task=view\&\;id=4\&Itemid=1
  DB<7> x $file
0  'localhost/index.php?option=com_content\\&\\;task=view\\&\\;id=4\\&Itemid=1'

Есть предложенимя почему не создается:?

perl -e '$file =

perl -e '$file = "?;&file";open(FH,">", $file);print FH "\n";close FH' && ls \?*

?;&file

у меня вот всё нормально создается.

Так у меня

Так у меня почему то тоже работает =(

эмм, может chomp

эмм, может chomp забыли?)
chomp($dir,$file);

вообще это не

вообще это не совсем гуд такие файлы писать.
а если файл будет что-то вроде
$file="/../../../../etc/passwd"
?
бери MD5 сумму от $file и юзай ее как имя файла. либо base64

#md5
use Digest::MD5 qw(md5 md5_hex md5_base64);
$new_filename = md5_hex($file);

#base64
use MIME::Base64;
$new_filename = encode_base64($file);

и дальше пишем в $dir/$new_filename

Решено

Нашел ошибку..
День потерял на такой херне..
Проблема в том что пытался сохранить на винт с fat32 =((
Поэтому хорошие названия сохранялись а плохие нет =().
Хорошо хоть вспомнил что он у меня под fat32

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".