URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8626
[ Назад ]

Исходное сообщение
"а как в перле нумерованные переменные обозначить?"

Отправлено greenwar , 15-Фев-10 18:40 
вот как это:
for($i=0;$i<100;$i++){
    $var=$array[int rand(@array)]}

переделать так, чтобы $var стал $var1 $var2 $var3 и т.д.? тобишь как-то $var$i замутить..
в шелле оно как-то через eval по-моему делалось, а в перле как?


Содержание

Сообщения в этом обсуждении
"а как в перле нумерованные переменные обозначить?"
Отправлено Пытливый Ум , 15-Фев-10 19:23 
$i = 10;
$name = 'var' . $i;
$$name = 'test';
print $name . "\n" . $var10;

"а как в перле нумерованные переменные обозначить?"
Отправлено Pahanivo , 16-Фев-10 08:16 
>$i = 10;
>$name = 'var' . $i;
>$$name = 'test';
>print $name . "\n" . $var10;

о великий медиум! ты осилил понять?


"а как в перле нумерованные переменные обозначить?"
Отправлено greenwar , 16-Фев-10 10:53 
>$i = 10;
>$name = 'var' . $i;
>$$name = 'test';
>print $name . "\n" . $var10;

не смог догнать, а как это применить к моей задаче то?
напомню: требуется поиметь $var1-10 в цикле (т.е. на выходе из цикла 10 переменных), каждый со своим значением


"а как в перле нумерованные переменные обозначить?"
Отправлено Пытливый Ум , 16-Фев-10 22:26 
>не смог догнать, а как это применить к моей задаче то?

Плохо. Рыбий жир надо пить.
Создаёшь имя переменной в цикле и присваиваешь ей значение. На выходе 10 переменных со своими значениями.

Хотя задача бредовая ибо массивы есть


"а как в перле нумерованные переменные обозначить?"
Отправлено Пытливый Ум , 16-Фев-10 22:28 
$$name = 'test';

это присвоить значение переменной, имя которой хранится в переменной $name


"а как в перле нумерованные переменные обозначить?"
Отправлено Andrey Mitrofanov , 16-Фев-10 09:32 
>в шелле оно как-то через eval по-моему делалось, а в перле как?

Ну... http:/openforum/vsluhforumID9/8494.html#5 в общем... Можно и без eval. Ж)

$ value1=string
$ ref=value$((9-8))
$ echo ${!ref}
string
$ _


"а как в перле нумерованные переменные обозначить?"
Отправлено jd , 16-Фев-10 13:11 
>$ echo ${!ref}

Во, крутяк! А что это? Даже в мане по bash такого не нашёл. Но ведь работает! :)


"а как в перле нумерованные переменные обозначить?"
Отправлено greenwar , 16-Фев-10 15:41 
>>$ echo ${!ref}
>
>Во, крутяк! А что это? Даже в мане по bash такого не
>нашёл. Но ведь работает! :)

man bash. раздел "Parameter Expansion"


"а как в перле нумерованные переменные обозначить?"
Отправлено jd , 16-Фев-10 19:49 
Да этот раздел я смотрел. Странно, но у меня там ничего нет про это.

"сказки 1000 и одного bash-а :)))"
Отправлено Andrey Mitrofanov , 16-Фев-10 22:43 
>>$ echo ${!ref}
>
>Во, крутяк! А что это? Даже в мане по bash такого не нашёл.

${parameter}
[...]
If the first character of parameter is an exclamation point, a level  of  vari‐
able  indirection  is  introduced.   Bash uses the value of the variable formed
from the rest of parameter as the name of the variable; this variable  is  then
expanded  and  that  value is [...]

http:/openforum/vsluhforumID10/4460.html#2
http:/openforum/vsluhforumID1/84460.html#1

У самого о-очень большие трудности с "дочитать до середины"... :( Код и опыт (со "справочным" чтением m b -- существенно легче. Ну, или читать чужой sh-код, со словарём - в особенно погравившижся :) местах.

...А почему Гугль не ищет по строкам вроде "{!"?? %)
---То, чего Вы никогда не прочитаете в man bash, но оно _там_есть_! :D


"сказки 1000 и одного bash-а :)))"
Отправлено jd , 17-Фев-10 00:36 
>If the first character of parameter is an exclamation point, a level
> of  vari‐
>able  indirection  is  introduced.   Bash uses the
>value of the variable formed
>from the rest of parameter as the name of the variable; this
>variable  is  then
>expanded  and  that  value is [...]

Точно, вот ведь слепой! По ману ${! поискал, раздел Parameter Expansion наискосок пробежал, а вот это, словами про восклицательный знак, проглядел... :)

P.S. Одно время man bash на ночь как книжку интересную читал, просто подряд. Не помню уже, прочитал ли весь, но скилл повысил здорово, конечно. 8-)


"а как в перле нумерованные переменные обозначить?"
Отправлено Pahanivo , 16-Фев-10 13:11 
>>в шелле оно как-то через eval по-моему делалось, а в перле как?
>
>Ну... http:/openforum/vsluhforumID9/8494.html#5 в общем... Можно и без eval. Ж)
>
>$ value1=string
>$ ref=value$((9-8))
>$ echo ${!ref}
>string
>$ _

о мудрые старшие товарисчи, объясните мне смысел этих извратов ))


"а как в перле нумерованные переменные обозначить?"
Отправлено greenwar , 16-Фев-10 15:43 
>[оверквотинг удален]
>>
>>Ну... http:/openforum/vsluhforumID9/8494.html#5 в общем... Можно и без eval. Ж)
>>
>>$ value1=string
>>$ ref=value$((9-8))
>>$ echo ${!ref}
>>string
>>$ _
>
>о мудрые старшие товарисчи, объясните мне смысел этих извратов ))

смысел примерно такой же, как тут например:

#!/usr/bin/perl
$_='
         $q ="\                   47"; wh
        ile                           ($ ;=
      $z                +=              .5 ){
    %c=           $r=0;$/ ="";whi         le(2
   0+          $z>($;+=.05)){$c{int$       _+ 2
  6+         2*($              r+= .0       2) *
s          in$                   ;}{1       -$_
+1         0+           int        $r*c       o s
$         ;}         =1for(0.       .1)        }$
t        =r         ever se;$        /.        =`
c        le        ar     `.         "         #!
/        usr       /bi             n/         pe
rl       \n\       $_ =$q        \n"          ;
fo        r$y        (1..20){$c{$_}          {
$ y       }? $         /.=chop$t            :
($/        . ="                          \4
0")         for(0.                    .53)          ;
   $/.        ="\n"}pri            nt"$/$          q;
   s; ".         chr(9 2)."s;;g;eval\n           "}

';s;\s;;g;eval

P.S. это не rm -rf, если чё


"а как в перле нумерованные переменные обозначить?"
Отправлено Pahanivo , 16-Фев-10 17:10 
ух ты - стерео-картинке!



"а как в перле нумерованные переменные обозначить?"
Отправлено Andrey Mitrofanov , 16-Фев-10 22:47 
Это Знание откроется тебе только тогда, когда ты будешь к этому _готов_, ма-ла-дой па-да-ван. :-P

"а как в перле нумерованные переменные обозначить?"
Отправлено anonymous , 19-Фев-10 00:33 
>вот как это:
>for($i=0;$i<100;$i++){
>    $var=$array[int rand(@array)]}
>
>переделать так, чтобы $var стал $var1 $var2 $var3 и т.д.? тобишь как-то
>$var$i замутить..
>в шелле оно как-то через eval по-моему делалось, а в перле как?
>

#!/usr/bin/perl

@array = qw (a b c d e f g h i j k);

for($i=0;$i<10;$i++){
    ${var.$i}=$array[int rand(@array)];
}

print "$var1 $var2 $var3\n";


"а как в перле нумерованные переменные обозначить?"
Отправлено greenwar , 19-Фев-10 00:36 
>#!/usr/bin/perl
>
>@array = qw (a b c d e f g h i j k);
>
>for($i=0;$i<10;$i++){
>    ${var.$i}=$array[int rand(@array)];
>}
>
>print "$var1 $var2 $var3\n";

спасибо, человек, разбирающийся в перле
аж 2 новые темы узнал из трёх строк ^^