Надеюсь, что кто-то сможет помочь, почему мой цикл while не завершится, когда я подключу два устройства Android.Perl-цикл для ожидания массива adb-устройств
С помощью исследований SO я сумел сколотить код ниже, однако я добавил цикл while, чтобы дождаться ответа на команду Android adb devices. Я ищу, чтобы сидеть в этом цикле, ожидая подключения двух устройств Android через USB к моему компьютеру или при подключении двух подключенных устройств. Мой код компилируется нормально и может работать через цикл while, когда устройства уже включены и подключены, но когда я запускаю сценарий с USB-кабелями на устройствах Android, отключенных, а затем через несколько секунд подключите USB-соединения на моем ПК скрипт все еще сидит в цикле. Я запускаю этот скрипт на последней версии Strawberry Perl в Windows 7.
Любые указания будут оценены.
Вот код ...
use strict;
use warnings qw(all);
use IPC::Run3;
use Carp qw(croak confess cluck);
use Data::Dumper;
my @devices = get_devices();
my $devicesattached = "";
while ([email protected]){
get_devices();
print ".";
sleep (1);
last if @devices;
}
print "\n\tDevice 1 is $devices[0]";
print "\n\tDevice 2 is $devices[1]\n";
sub get_devices {
my $adb_out;
run3 ["adb", "devices"], undef, \$adb_out, undef;
$? and cluck "Warning: non-zero exit status from adb ($?)";
my @res = $adb_out =~ m/^([[:xdigit:]]+) \s+ device$/xmg;
return wantarray ? @res : \@res;
}
Большое спасибо, MikG
После того, как вы входите в цикл, вы никогда не меняете '@ devices. – ThisSuitIsBlackNot
@ThisSuitIsBlackNot: Ваш комментарий верен и должен быть написан как ответ. – Borodin
@Borodin Работа над ним. – ThisSuitIsBlackNot