URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6532
[ Назад ]

Исходное сообщение
"Помогите с 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 , 08-Июн-07 10:26 
>вот такой скриптик:
>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 , 08-Июн-07 11:04 
>>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 , 08-Июн-07 11:11 
>>>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>) {..

"Помогите с perl"
Отправлено Cyrus_user , 08-Июн-07 11:43 
>>>>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>) {..


но так он из файла ничего не читает..


"Помогите с perl"
Отправлено cat , 08-Июн-07 12:03 
http://perlmonks.org/?node_id=128200

"Помогите с perl"
Отправлено Cyrus_user , 08-Июн-07 15:12 
>http://perlmonks.org/?node_id=128200

о! спасибо большое!