С Новым годом! Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 9
1

Используя файл Mail.Log, вывести информацию за указанный диапазон времени

20.05.2015, 21:54. Показов 1939. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Используя файл Mail.log, вывести информацию за указанный диапазон
времени (временной период передается скрипту в качестве параметров
командной строки).
Пример: perl 1.pl 10:11:39 12:21:45
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2015, 21:54
Ответы с готовыми решениями:

Вывести информацию об исполнителях и их композициях созданных в указанный период времени
в текстовом файле находится информация об исполнителях. Каждая запись имеет вид: исполнитель,...

Запуск программы через батник в указанный диапазон времени
День добрый! При запуске Винды стартует батник. Нужен код, который проверяет время. И если...

Вывести из файла указанный диапазон байт на std вывод
Здравствуйте! Пожалуйста помогите написать код для программы или хотя бы объясните примерно как...

Используя сформированный файл, вывести информацию о знакомых, проживающих на данной улице
Составить программу создания текстового файла с именем Т, с информацией о "Знакомых", вывести...

12
6297 / 2138 / 337
Регистрация: 10.12.2013
Сообщений: 7,375
21.05.2015, 14:40 2
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env perl -s
use strict;
 
sub secs(_)
{
    shift =~ /(\d+):(\d+):(\d+)/;
    return undef if not defined $1
                 or not defined $2
                 or not defined $3;
    return ( $1*3600+$2*60+$3 );
 
}
 
our ( $log, $from, $to );
print <<HELP and exit unless $log and $from and $to;
 
USAGE: perl $0 -log=mail.log -from=07:12:34 -to=12:00:00
 
HELP
 
open LOG, $log     or die "Log file '$log' error: $!";
$from = secs $from or die "Wrong start point";
$to   = secs $to   or die "Wrong stop  point";
 
while (<LOG>) {
    my $s = secs;
    last  if $s > $to;
    print if ($s >= $from) and ($s <= $to);
}
close LOG;
Есть моменты, которые имеет смысл отметить:

[1] Ключ -s,
который позволяет произвести рудиментарный разбор переданных скрипту аргументов вида -key=value;
названия ключей превращаются в соответствующие переменные;
эти переменные должны принадлежать пространству имен пакета, поэтому об'являть их с помощью my
нельзя и они об'явлены как our.

[4] об'явление прототипа фунцкции secs(_) с помощью нижнего подчеркивания, позволяет делать вызов secs без круглых скобок и подставлять $_ в качестве аргумента при его отсутствии
( строки [22], [23],[26] )

[17] в $0 хранится имя исполняемой программы
0
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 9
26.05.2015, 17:24  [ТС] 3
Vydaet oshibku, Semicolon seems to be missing at perl1.pl line 18.
Can't modify concatenation (.) or string in scalar assignment at perl1.pl line 17, near "07:"
syntax error at perl1.pl line 17, near "07:"
Execution of perl1.pl aborted due to compilation errors.

Добавлено через 3 часа 45 минут
Еще хочу отметить, Perl (Ubuntu,Linux)
0
6297 / 2138 / 337
Регистрация: 10.12.2013
Сообщений: 7,375
26.05.2015, 21:48 4
Цитата Сообщение от Nikifedya Посмотреть сообщение
Еще хочу отметить, Perl (Ubuntu,Linux)
убунту, запятая, линукс. офигеть.

Федя, ответь лучше, зачем ты стёр 15-ю строку исполняемого кода?
0
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 9
26.05.2015, 22:12  [ТС] 5
Я ее не стирал, я только попробовал убрать << и все, а до этого, прога просто выводила то что написано на 17 строке.
0
6297 / 2138 / 337
Регистрация: 10.12.2013
Сообщений: 7,375
26.05.2015, 23:23 6
Цитата Сообщение от Nikifedya Посмотреть сообщение
прога просто выводила
"прога" не просто так буквовки выводила, а показывала, как себя запускать.

видать, зря.

Добавлено через 4 минуты
Федя, расскажи, ты смахнул в коде строку, не понимая зачем,
а потом присылаешь мне диагностику с ошибками компиляции.

и теперь уже я не понимаю - зачем??

( впрочем, вопрос риторический )
0
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 9
27.05.2015, 07:21  [ТС] 7
Смотри, я создаю perl1.pl вставляю твой код, до этого скачиваю mail.log где информация хранится, потом запускаю perl1.pl а он мне выводит просто USAGE: perl $0 -log=mail.log -from=07:12:34 -to=12:00:00, а по сути должно выводить
информацию за этот промежуток времени, или не так я понимаю?
https://www.dropbox.com/s/li3c... l.log?dl=0 ссылка на mail.log
0
6297 / 2138 / 337
Регистрация: 10.12.2013
Сообщений: 7,375
27.05.2015, 07:31 8
это какой-то параллельный мир...

Цитата Сообщение от volodin661 Посмотреть сообщение
"прога" не просто так буквовки выводила, а показывала, как себя запускать.
0
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 9
27.05.2015, 07:32  [ТС] 9
то есть когда он выводит USAGE и т.д надо самому просто еще раз промежуток времени ввести?
0
6297 / 2138 / 337
Регистрация: 10.12.2013
Сообщений: 7,375
27.05.2015, 07:40 10
да, Федя, да, надо подставить свои промежутки времени и своё расположение файла mail.log
0
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 9
27.05.2015, 07:45  [ТС] 11
попробывал написать промежутки, не пашет. что то не то
0
6297 / 2138 / 337
Регистрация: 10.12.2013
Сообщений: 7,375
27.05.2015, 08:03 12
Bash
1
perl perl1.pl -log=mail.log -from=21:57:47 -to=23:59:59
0
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 9
28.05.2015, 07:12  [ТС] 13
все равно ничего не выводит

Добавлено через 23 часа 1 минуту
А без использования библиотек можно сделать?
0
28.05.2015, 07:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2015, 07:12
Помогаю со студенческими работами здесь

Найти прирост суммы вклада за указанный период времени, используя циклы
Напишите программу с помощью циклов.Гражданин 1 марта открыл счет в банке, вложив 1000 руб. Через...

Вывести информацию о телевизорах, имеющих указанный размер экрана
Дан массив данных, в котором хранятся данные о телевизорах на складе магазина: наименование ,...

Вывести на экран информацию о фильмах, выходящих в прокат в указанный период
Написать программу, которая записывает данные в массив структур и производит обработку этих...

Вывести на Label информацию из БД (диапазон строк в DataGridView)
Есть DataGridView(table1) i Label. Мне нужно: выделить ряд в DataGridView, затем нажать на кнопку и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru