Как заставить мой процесс использовать переменную, определенную в fooSpace?
blockquote>Вы используете
upvar
фиктивно, вы пропускаете аргумент уровня,#0
: [ 1116]upvar "#0" [namespace current]::$myValue fruit
Кроме того,
$fooSpace
ссылается не на пространство именfooSpace
, а на локальную переменную proc с этим именем (отсюда и ошибкаcan't read "fooSpace": no such variable
); поэтому:[namespace current]::$myValue
, который превращается в
::fooSpace::$myValue
Но я не думаю, что могу сделать переменную $ myvalue в рамках моего процесса, либо
blockquote>Зависит от того, что если вы хотите работать с переменной ссылки
fruit
, нет, командаvariable
этого не даст. Но вы, безусловно, можете ссылаться на переменные пространства имен следующим образом:variable $myValue
Незначительное предложение:
myValue
будет лучше придуманоmyVar
илиmyVarName
, потому что аргумент обозначает (пространство имен) имен переменных [1114 ] (не значения, хранящиеся в этих переменных).
Как создать буквенно-цифровой ключ в Perl?
join '', map + (0..9 , 'a' .. 'z', 'A' .. 'Z') [rand (10 + 26 * 2)], 1..8
Ответ анонимного очень хорош, но, если вам нужен случайный Строка, которая соответствует некоторым правилам (таким как, по крайней мере, один верхний регистр, один нижний регистр и одно число), вы можете посмотреть в String :: Random .
Я бы, наверное, использовал pwgen. Это замечательно, так как позволяет легко настраивать и позволяет не использовать неоднозначные символы (например: I, l, 1, O, 0).
, например:
=> pwgen -c -n -B 8 50
shuFak9o peiCh3Oo ohPieng9 Vohh7zuu os3Theep aeV9nuo9 aexeik4B aeChoh9s
uth3eePu baePhu3o aiS3pahn iPie4itu We9zuphi xie3Chi3 yeiRoo7c fai3ITai
aCh9ohco Echuab7v Fu9ahCho Aevae4no Peethai9 AiJio3Pa aeNge9Fo baePh7Uy
Nai7shei eeMoh9en Zeibai4n eGe7yuch Jaek7nai aeZah7sh Chei4ua4 shoo9oG9
iu7Wohho aep7De4U Fong9fo3 AhneeP7U oxae7Yoh ahF4eim3 fahm9Aiw naoNg4ie
Chie4xua jix3Uvot aChei7ai diey4Shi Yur7ee4j eeJeo9ee Bou3ahmu kaeb4Cah
Eh4Eemae oD4phoo9