2

我想打开两个单独的选项卡并在 Firefox 中保持打开状态。我正在使用WWW::Mechanize::Firefox. 请在下面找到代码:

#!/usr/bin/perl -w
use strict;
use WWW::Mechanize::Firefox;

my @array = <DATA>;

foreach (@array)
{
    my $mech = WWW::Mechanize::Firefox->new(    
                                            activate => 1,  # bring the tab to the foreground
                                            autoclose => 0  # to prevent autoclosing of the Tab
                                        ); 
    $mech->get($_);
}

__DATA__
www.google.com
www.yahoo.com

上面的代码工作正常并创建了两个选项卡。但是我对我的方法不满意,因为我正在创建两个对象。我正在寻找一些方法来打开多个标签。我不能用单个$mech对象来做,因此使用 for 循环创建了多个对象。

我浏览了以下文档:

万维网::机械化::火狐

火狐::应用

WWW::Mechanize::Plugin::Display

WWW::Mechanize::Firefox::Cookbook

但是他们似乎都没有回答这个问题。或者我可能错过了这些文档中的一些信息。

问题:

  1. 是否可以使用WWW::Mechanize::Firefox 或其他一些相关的 firefox mechanize 模块打开多个选项卡?如何?
  2. 就个人而言,我不喜欢上面粘贴的代码创建多个对象。创建多个对象可以/不好吗?

谢谢。

4

1 回答 1

1

创建多个对象本身并没有错。您可能会担心内存开销。这些对象可能有额外的东西(在本例中为 localhost TCP 套接字),您不想复制这些东西。您可能会发现,每次您想要执行一个必须在对象之间共享的逻辑操作时,都必须遍历多个对象,这很烦人。

但没有人会惊恐地退缩。“多个对象?!你怎么敢。”

如果您只想打开多个选项卡,我会使用以下内容:

sub browse {
  my $method = $_[1] ? 'new-window' : 'new-tab';
  system firefox => -remote => "openURL($_[0],$method)"
}
于 2013-05-11T03:18:47.707 回答