вот такой скриптик:
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 дней назад? Что то помучился, но не смог :(
>вот такой скриптик:
>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 днях и обратно в дату
>>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) в таком скрипте?
>>>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>) {..
>>>>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>) {..
но так он из файла ничего не читает..
http://perlmonks.org/?node_id=128200
>http://perlmonks.org/?node_id=128200о! спасибо большое!