>вот такой скриптик: >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 днях и обратно в дату
|