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

Thank you shmem & zentara. I couldn't find htmlview in my ubuntu 6.10, so I finally used
if ($output = `firefox`) {print "no browser found\n"}

Replies are listed 'Best First'.
Re^3: opening browser from script
by shmem (Chancellor) on May 17, 2007 at 14:22 UTC
    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}
      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}
Re^3: opening browser from script
by zentara (Cardinal) on May 17, 2007 at 12:04 UTC
    Are you sure that works like you think? The way I interpret it, you are setting $output to the backticks returned string with the =. Maybe you need == or eq ? Or I am possibly just oblivious to the magic invoved. :-)

    I'm not really a human, but I play one on earth. Cogito ergo sum a bum