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

Код: 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
(Perl) Определить максимальное значение
    #37369095
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том же цикле
Код: plaintext
$max = $id  if  $id > $max;
?

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

спасибо за решение!
...
Рейтинг: 0 / 0
(Perl) Определить максимальное значение
    #37369377
Alexey181
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
(Perl) Определить максимальное значение
    #37369512
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey181,

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

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

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

Тогда уж заменить awk на split, чтоб совсем уж альтернативно:)
...
Рейтинг: 0 / 0
(Perl) Определить максимальное значение
    #37372894
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде как split не умеет юзать текстовые разделители. Или ман плохо читал... На cut можно заменить, он умеет.
...
Рейтинг: 0 / 0
(Perl) Определить максимальное значение
    #37372913
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
split умеет пользовать регулярки. Если это Perl'овый сплит
...
Рейтинг: 0 / 0
(Perl) Определить максимальное значение
    #37373028
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В исходном варианте топикстартера так и было - сплит с регекспом.
...
Рейтинг: 0 / 0
(Perl) Определить максимальное значение
    #37373109
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Общая парадигма будет что-то типа:
Код: plaintext
1.
 $_ = <IN>;
 print  "Result is: ". @{ sort ( split ("<MyCoolSplitRegExp>", $_))}[ 0 ]."\n"
...
Рейтинг: 0 / 0
(Perl) Определить максимальное значение
    #37373352
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleВроде как split не умеет юзать текстовые разделители. Или ман плохо читал... На cut можно заменить, он умеет.
Ошибся, не split, а конечно же cut.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
(Perl) Определить максимальное значение
    #38479262
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(Perl) Определить максимальное значение
    #38479286
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volodin661,

Или так:


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


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