Xpoint
   [напомнить пароль]

Создание хэша ($string => файловый дескриптор файла "$script.txt")

Метки: [без меток]
[удл]
2012-05-18 22:46:44 [обр] Никита[досье]
сообщение промодерировано

Здравствуй, сообщество)

Вопрос следующий: Можно ли создать хэш такой, чтобы в качестве ключа использовалась строка $mail, которую отлавливаем регэкспом, а в качестве значения - файловый дескриптор файла, открытого для записи в него?

Фрагмент кода следующий:

#!/usr/local/bin/perl

%writefiles=();
open($MAINFILE, '< unix1.mailbox');
while (my $line = <MAINFILE>) {
    $line =~ m/^From (.*?) /i; #Сам регэксп;
    my $mail = $1;

    if ($mail) {
        if (exists $writefiles{$mail}) {
            $handle=\writefiles{$mail};
        } else {
            sysopen(*NEWFILE,"$mail.mailbox",O_WRONLY|O_TRUNC|O_CREATE);
            %writefiles{$mail}=\*NEWFILE;  #Моя попытка добавить в хэш элемент такого типа;
        }
    }
    print ($handle $line);
}
close(MainFile);

foreach my $file (keys %writefiles) {
    close($writefiles{$file});
}
спустя 1 час 56 минут [обр] Евгений Седов aka KPbIC(38/176)[досье]
сообщение промодерировано

Во-первых, всегда используйте use strict;. Во-вторых, не показывайте код, не относящийся к делу — закрытие файлов, чтение из файла, ре. В-третьих, в хеше хранить можно что угодно.

И наконец, в пакете для одного имени есть всего лишь один слот под дескриптор, и попытка запихнуть туда несколько значений обречена на провал. Используйте обычную переменную, как вы это сделали в самом начале. И, конечно, каждый сискол надо обязательно проверять на ошибку.

спустя 9 часов [обр] Никита[досье]

Да, спасибо, я разобрался.

Тему можно закрывать.

Powered by POEM™ Engine Copyright © 2002-2005