The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите с perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите с perl"  
Сообщение от Cyrus_user on 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 дней назад? Что то помучился, но не смог :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Помогите с perl"  
Сообщение от cat (??) on 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 днях и обратно в дату

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Помогите с perl"  
Сообщение от Cyrus_user on 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) в таком скрипте?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Помогите с perl"  
Сообщение от Homewrecker (ok) on 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>) {..
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Помогите с perl"  
Сообщение от Cyrus_user on 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>) {..


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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Помогите с perl"  
Сообщение от cat (??) on 08-Июн-07, 12:03 
http://perlmonks.org/?node_id=128200
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Помогите с perl"  
Сообщение от Cyrus_user on 08-Июн-07, 15:12 
>http://perlmonks.org/?node_id=128200

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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