in reply to Re^2: opening browser from script
in thread opening browser from script

That
if ($output = `firefox`) {print "no browser found\n"}

would mean that you invoke firefox, wait for firefox to exit and stuff its output into $output. Meanwhile (while firefox is running) your application is blocked. Is that the intended behaviour?

What happens if the invocation fails? Most probably the shell will send an error message to its STDERR, which you don't collect in $output. Bummer, no error message "no browser found"...

Collecting the output of a program that doesn't exist is no good to test its existence. A better approach would be

BROWSER: { for my $dir (split /:/, $ENV{PATH}) { for my $browser (qw(firefox mozilla opera konqueror)) { if (-x "$dir/$browser") { system "$dir/$browser" # or "$dir/$browser &" to bac +kground and die "running $browser returned $?\n"; last BROWSER; } } } print "no browser found.\n"; }

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

Replies are listed 'Best First'.
Re^4: opening browser from script
by diamantis (Beadle) on May 17, 2007 at 14:38 UTC
    Actually, I meant
    if (`firefox&`) {print "no browser found\n"}
    but I wrote it wrong in the previous post! I should better pay attention next time I start hearing "Brain overflow...out of memory"
      That's bogus, and you are still not getting STDERR:
      if(`nonexisting &`) { die "running 'nonexisting' produced whatever output.\n" } print "all well.\n"; __END__ sh: nonexisting: command not found all well.

      --shmem

      _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                    /\_¯/(q    /
      ----------------------------  \__(m.====·.(_("always off the crowd"))."·
      ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}