Используйте .find
, чтобы найти потомков, соответствующих определенному селектору:
mySel.find("option[value='option1']").remove()
Вы хотите Получение:: Крошечный
use Capture::Tiny 'tee';
my $output = tee { system( "some command" ) };
Я записал это для замены Мишени и приблизительно 20 других модулей, которые делают своего рода получение, но испорчены так или иначе.
- xdg (иначе dagolden)
Возможно, мой ответ здесь может помочь Вам: Как я могу сцепиться в печать Perl?
Вывод к обоим потокам имеют быть одновременным?
В противном случае Вы могли сделать:
my $var = 'cmd'
my $output = `$cmd`
print STDOUT $output
или для более безопасной версии, которая не включает вызов подоболочки и печатает к STDOUT строку за один раз:
sub backtick(@)
{
my $pid = open(KID, '-|');
die "fork: $!" unless defined($pid);
if ($pid) {
my $output;
while (<KID>) {
print STDOUT $_;
$output .= $_; # could be improved...
}
close(KID);
return $output;
} else {
exec @_;
}
}
my @cmd = ('/bin/ls', '-l');
my $output = backtick(@cmd);
Можно сделать это через дескриптор файла также. Не столь изящный как некоторые решения, но это, вероятно, работало бы. Что-то вроде:
my $foo;
open(READ, "env ps |");
while (<READ>) {
print;
$foo .= $_;
}
print $foo;
close(READ);
Отправьте вывод от модуля Мишени до /dev/stdout
(или /dev/fd/1
).
Вы могли использовать IO::String
модуль к select()
STDOUT к строке и затем звонят system()
выполнять команду. Можно собрать вывод из IO::String
дескриптор. Это эффективно делает то, что делает синтаксис обратной галочки.
Таким образом для сбора команды производит в реальном времени, работайте system()
управляйте асинхронно через fork()
или некоторые другие средства и опрос дескриптор для обновлений.
Править: На OP оказывается, что этот подход не работает. select()
не влияет system()
вызовы.
Кроме того, IO::String
был заменен новым open()
синтаксис начиная с Perl 5.8, который делает ту же функцию.