Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Не пойму в чем может быть ошибка??? / 4 сообщений из 4, страница 1 из 1
25.06.2005, 19:59
    #33134944
Guest111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Не пойму в чем может быть ошибка???
Делаю аплод файла, аплодится успешно, имя файла определяю так:
автор
my $req = new CGI;
my $file = $req->param("upload_file");
my $fileName = $file;
$fileName =~ s/.*(\/|\\)(.+)\.(zip|rar|jpg|gif)/$2\.$3/g;

print "|$fileName|";

После этого кода на экран выводится вот что:
|test.jpg|

Далее у меня код:
автор
my $zip = Archive::Zip->new();
my $member = $zip->addString( $link_text, 'ReadMe.txt' );
$member->desiredCompressionMethod( COMPRESSION_STORED );
$member = $zip->addFile( $fileName );
die 'Arhive::ZIP: write error' unless $zip->writeToFileNamed( "sdf.zip" ) == AZ_OK;

и вот он ошибочен... Причем, если делаю вот так:
автор
my $zip = Archive::Zip->new();
my $member = $zip->addString( $link_text, 'ReadMe.txt' );
$member->desiredCompressionMethod( COMPRESSION_STORED );
$fileName = "test.jpg";
$member = $zip->addFile( $fileName );
die 'Arhive::ZIP: write error' unless $zip->writeToFileNamed( "sdf.zip" ) == AZ_OK;

то всё проходит отлично.. но почему? Что ему не нравится в строке $fileName? Неужели там есть какие-то невидимые символы?
Как можно удалить все кроме "видимых"?

Уже совсем не понимаю в чем тут может быть дело, почему код:
автор
open ( OUTFILE, ">$fileName" );
binmode ( OUTFILE );
while ( my $bytesread = read( $file, my $buffer, 1024 ) ) {
print OUTFILE $buffer;
}
close ( OUTFILE );


свободно сохраняет в файл с именем $fileName а СРАЗУ же после этого кода я пытаюсь заархивировать этот файл и он не может этого сделать, почему?
Почему смог сохранить, но ошибка при открытии через addFile ??
причем, если я присваиваю напрямую имя файла то всё хорошо.... чет тут не чисто :-)
...
Рейтинг: 0 / 0
25.06.2005, 20:04
    #33134946
Guest111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Не пойму в чем может быть ошибка???
Причем файл test.jpg реально существует в текущей директории...
в чем тут трабла ума не приложу....

вроде print $fileName; выводит:
test.jpg

но ошибка появляется, указывающая на строку addFile:
авторSoftware error:

Arhive::ZIP: write error at F:/WWW/home/localhost/cgi-bin/work/FileUploaderXP/upload.cgi line 57
но если print $fileName; заменить на такое:
$fileName = "test.jpg";

то всё проходит отлично.... я в ауте от безнадежности
...
Рейтинг: 0 / 0
25.06.2005, 20:26
    #33134951
(Perl) Не пойму в чем может быть ошибка???
Кое чего уже добился.. фильтрую переменную $fileName так:

$fileName =~ tr/a-zA-Z /a-zA-Z/d;

и вроде даже сработало!

Случаем не подскажете как отредактировать эту строку так, чтобы из $fileName НЕ удалялись цифры и точки?
...
Рейтинг: 0 / 0
25.06.2005, 21:46
    #33134971
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Не пойму в чем может быть ошибка???
во первЫх пользуйся для этого
Код: plaintext
1.
$fileName =~ s/.*(\/|\\)(.+)\.(zip|rar|jpg|gif)/$ 2 \.$ 3 /g;

File::Basename и твои волосы будут... просто будут, как миниимум.


А по поводу последнего вопроса

s{[^\w.]}{}sg;
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Не пойму в чем может быть ошибка??? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]