The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Помогите с perl, !*! Cyrus_user, 08-Июн-07, 09:17  [смотреть все]
вот такой скриптик:
my $dat = sprintf '%u_%02u_%02u', (localtime time)[5]+1900,(localtime time)[4]+1,(localtime time)[3];
$^I = '.old';#режим перезаписи
open FILE,"file.tmp" || die "cannot open file";
while (<FILE>) {
($mail, $data,) = split(/:/);
print FILE,"$mail:$data\n" if ($data ne $dat);
} close FILE;

делая операцию над файлом file.tmp:
aaa@xxx:2007_04_08                                                                                              
bbb@xxx:2007_05_08                                                                                              
ccc@xxx:2007_06_08
по идее должен перезаписать file.tmp убрав строки, где $data не равна $dat
и создать копию file.tmp.old

но вместо этого он пишет:
No comma allowed after filehandle

Не могу понять что ему не нравится?

А также вопрос второй:
как мне стандартными средствами в $dat получить например 10 дней назад? Что то помучился, но не смог :(

  • Помогите с perl, !*! cat, 10:26 , 08-Июн-07 (1)
    >вот такой скриптик:
    >my $dat = sprintf '%u_%02u_%02u', (localtime time)[5]+1900,(localtime time)[4]+1,(localtime time)[3];
    >$^I = '.old';#режим перезаписи
    >open FILE,"file.tmp" || die "cannot open file";
    >while (<FILE>) {
    >($mail, $data,) = split(/:/);
    >print FILE,"$mail:$data\n" if ($data ne $dat);
    >} close FILE;
    >
    >делая операцию над файлом file.tmp:
    >aaa@xxx:2007_04_08
    >bbb@xxx:2007_05_08
    >ccc@xxx:2007_06_08
    >по идее должен перезаписать file.tmp убрав строки, где $data не равна $dat
    >
    >и создать копию file.tmp.old
    >
    >но вместо этого он пишет:
    >No comma allowed after filehandle
    >
    >Не могу понять что ему не нравится?
    >
    >А также вопрос второй:
    >как мне стандартными средствами в $dat получить например 10 дней назад? Что
    >то помучился, но не смог :(


    >print FILE,"$mail:$data\n" if ($data ne $dat);
    print FILE "$mail:$data\n" if ($data ne $dat);

    2 перевести в unixtime и вычесть количество секунд в 10 днях и обратно в дату

    • Помогите с perl, !*! Cyrus_user, 11:04 , 08-Июн-07 (2)
      >>print FILE,"$mail:$data\n" if ($data ne $dat);
      >print FILE "$mail:$data\n" if ($data ne $dat);
      >
      ой,слона то я и не заметил :) спасибо.

      >2 перевести в unixtime и вычесть количество секунд в 10 днях и
      >обратно в дату
      пробую... спасибо.


      однако не всё так просто. редактирование inline что-то не работает. в таком виде скрипт ничего не делает..
      +> сначала очистит, потом добавит.. заводить временный массив?
      +< добавляет желаемое в конец.
      как правильно использовать $^I (как в однострочнике perl -i) в таком скрипте?

      • Помогите с perl, !*! Homewrecker, 11:11 , 08-Июн-07 (3)
        >>>print FILE,"$mail:$data\n" if ($data ne $dat);
        >>print FILE "$mail:$data\n" if ($data ne $dat);
        >>
        >ой,слона то я и не заметил :) спасибо.
        >
        >>2 перевести в unixtime и вычесть количество секунд в 10 днях и
        >>обратно в дату
        >пробую... спасибо.
        >
        >
        >однако не всё так просто. редактирование inline что-то не работает. в таком
        >виде скрипт ничего не делает..
        >+> сначала очистит, потом добавит.. заводить временный массив?
        >+< добавляет желаемое в конец.
        open (FILE,">>","file.tmp") || die "cannot open file";
        while (<FILE>) {..



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру