Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Определить максимальное значение / 14 сообщений из 14, страница 1 из 1
27.07.2011, 13:58
    #37368874
Alexey181
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
Доброго дня!
Есть ли какая нибудь функция, которая найдет максимальное число, для примера из

Код: plaintext
1.
2.
3.
4.
5.
6.
#! /usr/bin/perl -w
open("passwd","/etc/passwd") or  die  "not found devices list $!";
 while (<passwd>) {
($id)=( split /\:/)[ 2 ];
 print  "max id is ". "$id\n";
}
close (passwd);
...
Рейтинг: 0 / 0
27.07.2011, 15:37
    #37369095
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
В том же цикле
Код: plaintext
$max = $id  if  $id > $max;
?

PS: Как совсем альтернативный вариант,
Код: plaintext
$ awk -F: '{print $3}' /etc/passwd |  sort  -rn | head -n  1 
...
Рейтинг: 0 / 0
27.07.2011, 16:19
    #37369229
Alexey181
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
vkle,

спасибо за решение!
...
Рейтинг: 0 / 0
27.07.2011, 17:08
    #37369377
Alexey181
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
vkle, а почему ошибка возникает не пойму?
Use of uninitialized value in concatenation (.) or string at ./create_user line 6, <STDIN> line 2.
Код: plaintext
1.
2.
3.
4.
5.
6.
 print  "insert username\n";
chomp($user=<STDIN>);
 print  "insert password\n";
chomp($pwd=<STDIN>);
$a=`awk -F: '{print $3}' /etc/passwd |  sort  -rn | head -n  1 `;
 print  $user."$a".$pwd;
...
Рейтинг: 0 / 0
27.07.2011, 18:06
    #37369512
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
Alexey181,

Не предполагал что так будете использовать )))
Кажется тут сильно закручено... В моем примере $3 относится к awk и означает "поле номер три". В данном же случае интерпретатор Perl пытается сначала собрать строку (конкатенция) чтоб использовать ее в обратных кавычках как команду. Переменная $3 отсутствует в перловом скрипте и интерпретируется как пустая строка, потому awk отрабатывает не так как хотелось бы, ну и так далее.... В общем, тут $ экранировать надо. Да, возможно chomp($a) добавить придется.
Поправьте, если ошибаюсь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.07.2011, 09:30
    #37370248
Alexey181
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
vkle,

все верно, спасибо за просвещение!
...
Рейтинг: 0 / 0
29.07.2011, 12:54
    #37372631
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
vkleВ том же цикле
Код: plaintext
$max = $id  if  $id > $max;
?

PS: Как совсем альтернативный вариант,
Код: plaintext
$ awk -F: '{print $3}' /etc/passwd |  sort  -rn | head -n  1 

Тогда уж заменить awk на split, чтоб совсем уж альтернативно:)
...
Рейтинг: 0 / 0
29.07.2011, 14:28
    #37372894
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
Вроде как split не умеет юзать текстовые разделители. Или ман плохо читал... На cut можно заменить, он умеет.
...
Рейтинг: 0 / 0
29.07.2011, 14:35
    #37372913
Warstone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
split умеет пользовать регулярки. Если это Perl'овый сплит
...
Рейтинг: 0 / 0
29.07.2011, 15:19
    #37373028
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
В исходном варианте топикстартера так и было - сплит с регекспом.
...
Рейтинг: 0 / 0
29.07.2011, 15:42
    #37373109
Warstone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
Общая парадигма будет что-то типа:
Код: plaintext
1.
 $_ = <IN>;
 print  "Result is: ". @{ sort ( split ("<MyCoolSplitRegExp>", $_))}[ 0 ]."\n"
...
Рейтинг: 0 / 0
29.07.2011, 17:02
    #37373352
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
vkleВроде как split не умеет юзать текстовые разделители. Или ман плохо читал... На cut можно заменить, он умеет.
Ошибся, не split, а конечно же cut.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.11.2013, 07:59
    #38479262
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
Alexey181Доброго дня!
Есть ли какая нибудь функция, которая найдет максимальное число, для примера из

Код: php
1.
2.
3.
4.
5.
6.
7.
#! /usr/bin/perl -w
open("passwd","/etc/passwd") or die "not found devices list $!";
while(<passwd>) {
($id)=(split/\:/)[2];
print "max id is ". "$id\n";
}
close (passwd);




Код: perl
1.
perl -a -F: -nE 'END{say $max} $max = $max>$F[2]? $max : $F[2]' /etc/passwd
...
Рейтинг: 0 / 0
27.11.2013, 08:50
    #38479286
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Определить максимальное значение
volodin661,

Или так:


Код: perl
1.
perl -E 'open F, "/etc/passwd" or die $!; undef $/; say [sort /(\d+):{2}/g]->[-1] for <F>'
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Определить максимальное значение / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]