Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.219.22.169] |
|
Сообщ.
#1
,
|
|
|
В общем мне нужно получить самый младший символ в строке. Для этого я решил сделать массив и его отсортировать вернув 0 элемент. В общем гугл говорит что это рабоает в perl ,однако в строке могут быть пробелы и они тогда занимают первые места при сортировке что не удивительно и верно согласно ascii таблице. Пробелы удаляю через регеэсп которым щедро угостил гугл, но вот после этого функция sort всеравно из откудато изыскивает и вставляет в начало! И еще если вывести массив через print @ все как будто бы работает и в массиве нет пробелов вообще. А при взятии по индексу они есть. В чем же дело?
вот код sub minElement() { # for(@_){ # s/\s+//g; # another way for remove spaces # } for(@_){1while' 'eq($c=chop);$_.=$c}; @sorted = sort(@_); $sorted[0]; } @input = qw "qwetrty " # this string may be wrong. In project use another way for create array; print &minElement(@inputArray); ну и сама песочница ~$ perl -v This is perl, v5.10.1 (*) built for i686-linux-gnu-thread-multi (with 40 registered patches, see perl -V for more detail) |
Сообщ.
#2
,
|
|
|
А чем не угодило сделать всё "прямо в лоб":
$stroka='123456789'; $str_len=length($stroka); $min_symbol=' '; for($n=0; $n<$str_len; $n++){ $tmp_sym=substr($stroka, $n, 1); if (ord($tmp_sym) < ord($min_symbol)){$min_symbol=$tmp_sym;} } Соответственно $min_symbol содержит символ с минимальным ASCII кодом. |