如何在任何操作系统上启动Perl中的默认Web浏览器?

mca*_*dre 12 browser url perl default

我想http://www.example.com/在Perl脚本的末尾打开一个URL,例如.我不想使用WWW :: Mechanize访问它,但实际上是在图形Web浏览器中向用户显示该网页.

有办法在Mac(open URL)和Windows中执行此操作,但我想要一个适用于任何操作系统的解决方案,而不仅仅是一个.

cjm*_*cjm 18

在search.cpan上第二次打开"open url"会打开Browser :: Open:

use Browser::Open qw( open_browser );

my $url = 'http://www.google.com/';
open_browser($url);
Run Code Online (Sandbox Code Playgroud)

如果您的操作系统不受支持,请发送补丁或错误报告.


Tar*_*ras 8

您可以使用$^O变量来标识平台,并为每个OS使用不同的命令.

例如:

sub open_default_browser {
  my $url = shift;
  my $platform = $^O;
  my $cmd;
  if    ($platform eq 'darwin')  { $cmd = "open \"$url\"";          } # Mac OS X
  elsif ($platform eq 'linux')   { $cmd = "x-www-browser \"$url\""; } # Linux
  elsif ($platform eq 'MSWin32') { $cmd = "start $url";             } # Win95..Win7
  if (defined $cmd) {
    system($cmd);
  } else {
    die "Can't locate default browser";
  }
}

open_default_browser("http://www.example.com/");
Run Code Online (Sandbox Code Playgroud)

  • 为什么重写Browser :: Open? (2认同)
  • 它取决于脚本的使用位置.如果它是单个脚本,则应使用较少的外部依赖项以获得更好的可移植性.但是模块可以与脚本一起使用,在这种情况下最好使用`Browser :: Open`. (2认同)
  • 虽然`xdg-open`似乎可以在更多的Linux系统上使用,而不是`x-www-browser`,例如在Fedora和CentOS上没有预先安装. (2认同)