часть моего кода выглядит следующим образом:Можем ли мы запустить два одновременных не-вложенных цикла в Perl?
while(1){
my $winmm = new Win32::MediaPlayer;
$winmm->load('1.mp3'); $winmm->play; $winmm->volume(100);
Do Some Stuff;
last if some condition is met;
}
Проблема: Я хочу, чтобы музыка всегда, когда я нахожусь в каком-то этапе Do запихнуть в то время цикла. Но длина музыки настолько коротка, что она дойдет до полной остановки, прежде чем я перейду на следующий этап, поэтому хочу, чтобы музыка повторялась, но модуль Win32 :: Mediaplayer, похоже, не имеет режима повтора, поэтому я собираюсь сделать бесконечный цикл для части, играющей музыку. Как это:
while(1){
my $winmm = new Win32::MediaPlayer;
$winmm->load('1.mp3'); $winmm->play; $winmm->volume(100);
}
while(2){
Do some stuff;
last if some condition is met
}
Но, основываясь на моем знаниях Perl, если я в то время как (1) часть, я никогда не может пойти на некоторое время (2) части. Даже если речь идет о вложенном цикле, я должен что-то сделать, чтобы вырваться из внутреннего цикла, прежде чем перейти к другой части внешнего цикла.
Ответ на мой вопрос «Можем ли мы запустить две одновременные не вложенные петли в Perl?» может быть НЕТ, но я предполагаю, что есть какой-то способ справиться с такой ситуацией. Поправьте меня если я ошибаюсь.
Спасибо как всегда за любые комментарии/предложения :)
UPDATE
Я очень ценю помощь от всех. Спасибо :) Итак, ответ на мой вопрос - ДА, а не НЕТ. Я рад, что я узнал, как пользоваться вилкой() и темы, чтобы решить реальную проблему :)
@Mike: Вам нужно только присваивать '$ winmm' один раз, см. Мой ответ ниже. – Zaid
@ Zaid, спасибо, что указали это :) – Mike