Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > преобразовать строку в массив символов


Автор: Dmitriy2k 18.11.2005, 22:24
Хочу получить массив символов.

Код

my $string;
$string="abcdefghijklmnop";


Хотелось бы чтоб код
Код

my $string;
$string="qwertyuiopasdfghjkl";
@array=$string;

присваивал массиву @array список символов. т.е

$array[0]='q';
$array[1]='w';
$array[2]='e;
$array[3]='r';
...
Как это решить?

Автор: sharq 18.11.2005, 23:55
Dmitriy2k если тебя интересует объявление, то
Код

my @array = qw(q w e r t y);


Если тебе нужно строку запихнуть в массив, то можешь посимвольно в цикле делать такое присвоение. А как ты будешь выделять символы это твое дело.
Вот один вариант (без цикла):
Код

my @array = split //, $string;

Вариант (с циклом):
Код

my @array;
while ($string =~ /(.)/g) {
 # здесь можно поработать с символом, который хранится в $1
 push @array, $1;
}


Зачем тебе это?

smile

Автор: Dmitriy2k 19.11.2005, 16:22
sharq :
Да... этоя тормоз. Я никак не думал, что эти иероглифы (результат моего скрипта) есть кодировка кирилицы DOS.

Я уж пытался Как нибудь сдвинуть Эти иероглифы по таблице ASCII на нужное место.

Код


...
#комманда операционной системы помещается в массив @result
if($hash{'cmd'}){
my @result = `$hash{'cmd'}`;
s/\r\n|\n//g foreach @result;


for($k=1;$k<N;$k++){
   my $cyg=$result[$k];
   my @array = split //, $cyg; # получаем строку и разбиваем ее в массив
   my @res;
   for ($i=1;$i<=(length $cyg);$i++){
      $ichar=ord($array[$i]);
      if ($ichar>XXX) $res[$i]=chr($ichar-YYY); #если ASCII код символа >XXX - сдвигаем его влево на YYY
    }
    print @res;
    print "<br>";
}
}

Автор: sharq 19.11.2005, 16:35
Dmitriy2k вот это ты удивил меня. smile

smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)