2015-02-04 4 views
2

Я совершенно не знаком с Perl и нуждаюсь в помощи, понимая чей-то код. Вложенный ниже фрагмент кода Perl. Можете ли вы помочь мне понять, что это значит?Будет ли это выражение работать?

my @m1 =keys(%{$key}); 
foreach (@m1){ 
    if (m/^(.*)\/$/) { 
      $a=$1; 
} } 

Это не работает. Будет ли это соответствовать значениям в m1 с группой захвата? Будет ли переменная a содержать совпадение группы захвата?

И что на самом деле выполняют функции клавиш?

+1

Если вы не знаете, что на самом деле делает 'keys', как вы можете сказать, что ваш фрагмент *, похоже, не работает *? –

+0

Извините, этот вопрос может быть неправильным. Я разместил здесь более подробный вопрос. http://stackoverflow.com/questions/28323423/reading-windows-regsitry-with-perl – user2834526

ответ

4

Это излишне шумно. Этот тип кода - это то, почему Perl получает халтуру. Это то же самое, как

my @m1 = keys %$key; 

for (@m1) { 
    if (m|^(.*)/$|) { 
    $a = $1; 
    } 
} 

Он перебирает все ключи в хэш ссылается $key (установка $_ к каждому из них) и проверяет, заканчивается ли они в слэша /. Если это так, то $a устанавливается в строку ключа без завершающей косой черты.

Я предполагаю, что в цикле должно быть больше, чем вы показали, потому что, поскольку оно стоит, оно малопригодно.

+0

Спасибо, Бородин. :) – user2834526

+0

Вы можете пойти дальше и прокрутить ключи напрямую. 'for (ключи% $ key)' – Schwern

Смежные вопросы