Модераторы: korob2001, ginnie
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Оператор повторения, Разъясните конструкцию 
:(
    Опции темы
Anarki
Дата 12.9.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Есть такой код
Код

@keys = (one,two,three);
@hash{@keys} = "a" x @keys;

Что в данном случае значит @hash{@keys} ?
Желательно поподробнее smile
"a" x @keys, @keys используется в скалярном контексте, как я понимаю...


--------------------
PM WWW   Вверх
sharq
Дата 12.9.2005, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Anarki
Цитата(Anarki @ 12.9.2005, 13:03)
Что в данном случае значит @hash{@keys} ?

Синтаксическая ошибка smile

Можно так:
Код

use stridt;

my @keys = qw(one two three);

my %hash;
$hash{@keys} = "a" x @keys;

print "$_: $hash{$_}\n" foreach (keys %hash);


@keys - используется в скалярном контексте.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Ivan Kolesnikov
Дата 12.9.2005, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 9.3.2005
Где: г. Новокузнецк

Репутация: 3
Всего: 6



Цитата

Что в данном случае значит @hash{@keys} ?

Поясню на примере:
Код

@hash{'a', 'b', 'c'} = (1,2,3);

Эквивалентно:
Код

$hash{a} = 1;
$hash{b} = 2;
$hash{c} = 3;

Но вот смысла от приведенного тобой выражения я не вижу.
Эквивалентное по смыслу заполнение хеша следующее:
Код

$hash{one} = "a" x 3;
$hash{two} = undef;
$hash{three} = undef;

--------------------
PM MAIL ICQ   Вверх
Гость_Юрий
Дата 12.9.2005, 12:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
"a" x @keys, @keys используется в скалярном контексте, как я понимаю...


Да в данном случае используется в скалярном контексте.
Т.е. Аналогично конструкции

Код

$var = "a" x 3 # $var = "aaa"


Данный код несколько загадочный, т.к. не совсем понятно чего именно автор хотел добиться... А значит подобных конструкция лучше избегать.

@keys в скалярном контексте вернет размер массива, т.е. 3

Посмотрим разницу
@hash{@keys} = "a" x @keys; => В $hash{one} = "aaa"

$hash{@keys} = "a" x @keys; => В $hash{3} = "aaa"










  Вверх
Anarki
Дата 12.9.2005, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Спасибо за ответы, теперь я разобрался.
Автор хотел заполнить хеш значениями `aaa`
Код

@hash{'one', 'two', 'three'} = ("a" x 3) x 3;
print %hash;

Вот так делает, что нужно.

Это сообщение отредактировал(а) Anarki - 12.9.2005, 13:01


--------------------
PM WWW   Вверх
ask(чайник)
Дата 14.9.2005, 21:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











есть такая кнопка:
<input type="submit" id="butt" value="Жми сюда">
как сделать, чтобы она автоматом нажималась через определенное время?

  Вверх
Usya
Дата 14.9.2005, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



1) Твой вопрос не имеет никакого отношения к этой теме. Создал бы новую...
2) Тебе скорее всего нужно не кнопку нажимать, а запускать скрипт при нажатии кнопки. Так это делается через cron... Там и устанавливаешь периодичность выполнения скрипта. smile
Или я что-то не понял.
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
Guest
Дата 14.9.2005, 22:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Usya @ 14.9.2005, 21:53)
1) Твой вопрос не имеет никакого отношения к этой теме. Создал бы новую...
2) Тебе скорее всего нужно не кнопку нажимать, а запускать скрипт при нажатии кнопки. Так это делается через cron... Там и устанавливаешь периодичность выполнения скрипта. smile
Или я что-то не понял.

1. я посчитал, что тема себя исчерпала, поэтому чтобы не плодить новые, мало кому интересные темы, я решил спросить здесь. (Прошу прощения у автора, если не прав)
2. все верно вы поняли.
Если не затруднит, опишите подробней
  Вверх
ask
Дата 14.9.2005, 22:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











это был я

PS: по поводу не интересности темы - разумеется, я имел ввиду свою тему неинтересной, а не автора топика.
PS: Извинения были по поводу вторжения в топик

smile
  Вверх
korob2001
Дата 15.9.2005, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



М
 
Тема закрыта. Читаем правила: 1 топик - 1 вопрос



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.