На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Внимательно изучите правила раздела перед созданием темы
0. ПРИЛАГАЙТЕ СВОИ СКРИПТЫ.
1. Прежде чем создать топик, используйте поиск. Возможно это уже обсуждалось.
2. В топике указывайте ОС, режим работы скрипта (CLI|CGI). Очень желателен вывод лог-файлов и того места, куда у вас назначен вывод данных (STDOUT|STDERR)
3. Помните: вы знаете что вы хотите, а форумчане - нет. Поэтому следуйте простому правилу: грамотный развернутый вопрос - грамотный развернутый ответ.
Модераторы: ANDLL
  
    > Удаление пробелов из массива символов. , загадочный sort
      В общем мне нужно получить самый младший символ в строке. Для этого я решил сделать массив и его отсортировать вернув 0 элемент. В общем гугл говорит что это рабоает в perl ,однако в строке могут быть пробелы и они тогда занимают первые места при сортировке что не удивительно и верно согласно ascii таблице. Пробелы удаляю через регеэсп которым щедро угостил гугл, но вот после этого функция sort всеравно из откудато изыскивает и вставляет в начало! И еще если вывести массив через print @ все как будто бы работает и в массиве нет пробелов вообще. А при взятии по индексу они есть. В чем же дело?
      вот код
      ExpandedWrap disabled
        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);


      ну и сама песочница
      ExpandedWrap disabled
        ~$ 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)
      Сообщение отредактировано: Slimy -
        А чем не угодило сделать всё "прямо в лоб":

        $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 кодом.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0179 ]   [ 16 queries used ]   [ Generated: 24.04.24, 21:05 GMT ]