<html>
  <head>
    <meta content="text/html; charset=KOI8-R" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">$ERRNO это $!, а ни $@, а в Try::Tiny
      вроде $_ используется:<br>
      <br>
       perl -MCarp -MTry::Tiny -E 'try { croak "aaaaa" } catch { say
      "XXX: $_" }'<br>
      <br>
      так что все работает<br>
      <br>
      29.10.2013 0:04, Nikolay Mishin пишет:<br>
    </div>
    <blockquote cite="mid:157631382990656@web23j.yandex.ru" type="cite">
      <div>MoscowPM, привет,</div>
      <div>ну и напоследок перед сном;))</div>
      <div> </div>
      <div>Нужно мне было, если не запущен firefox, то запустить его,
        пишу (<a moz-do-not-send="true">https://github.com/mishin/gists/blob/master/trans.pl</a></div>
      <div> 100-133)</div>
      <div> </div>
      <div>    my $url = '<a class="moz-txt-link-freetext" href="http://www.translate.ru/">http://www.translate.ru/</a>';<br>
            my $firemech;<br>
        <br>
            my $lived = eval {<br>
                $firemech = WWW::Mechanize::Firefox->new( tab =>
        qr/PROMT/sm, );<br>
                1;<br>
            };<br>
            my $err = $ERRNO;    # $@;<br>
        <br>
            given ($err) {<br>
        <br>
        #Failed to connect to , problem connecting to "localhost", port
        4242: Connection refused at
        /usr/local/share/perl/5.14.2/MozRepl/Client.pm line 144<br>
                when (/\QFailed to connect to , problem connecting
        to\E/xsm) {<br>
        <br>
          #        use Test::More;<br>
          #         is $lived, undef, 'We died trying to connect to a
        non-existing tab';<br>
          #         like $err, q{/Couldn't find a tab matching/},<br>
          #           'We got the correct error message';<br>
                    my $path_to_firefox =<br>
                      os_is('MSWin32')<br>
                      ? 'C:/Program Files (x86)/Mozilla
        Firefox/firefox.exe'<br>
                      : '/usr/bin/firefox';<br>
                    $firemech = WWW::Mechanize::Firefox->new(<br>
                        tab    => 'current',<br>
                        launch => $path_to_firefox<br>
                    );<br>
                    $firemech->get($url) or die "Cannot connect to
        $url\n";<br>
                }<br>
        <br>
                #Couldn't find a tab matching /(?^ums:PROMT)/ at
        trans.pl line 100.<br>
                when (/\QCouldn't find a tab matching\E/xsm) {<br>
                    say 'we match error' . $_;<br>
                    $firemech = WWW::Mechanize::Firefox->new( tab
        => 'current', );<br>
                    $firemech->get($url) or die "Cannot connect to
        $url\n";<br>
                }<br>
            }</div>
      <div> </div>
      <div>Так вот никакой Try:;Tiny ни Error.pm</div>
      <div>мне не помог, как это под них переписать</div>
      <div>я не пойму, чтобы работало</div>
      <div>Error.pm - вообще классы ошибок надо строить,а  как не ясно</div>
      <div> </div>
      <div>в общем по старинке ловлю ошибки эвалом eval</div>
      <div>дело в том еще, что <a moz-do-not-send="true"
          href="https://metacpan.org/source/WWW::Mechanize::Firefox">WWW::Mechanize::Firefox</a></div>
      <div><a class="moz-txt-link-freetext" href="https://metacpan.org/source/CORION/WWW-Mechanize-Firefox-0.74/lib/WWW/Mechanize/Firefox.pm">https://metacpan.org/source/CORION/WWW-Mechanize-Firefox-0.74/lib/WWW/Mechanize/Firefox.pm</a></div>
      <div>
        <div>внутри себя ипользует</div>
        <div>use<a moz-do-not-send="true"
            href="https://metacpan.org/source/Carp">Carp</a>qw(carp
          croak );</div>
        <div>и, таким образом, все ошибки пролетают мимо Try::Tiny</div>
        <div>- их невозможно поймать,</div>
        <div>в общем я их обрабатываю, как в тестах к модулю</div>
        <div><a moz-do-not-send="true"
href="https://metacpan.org/source/CORION/WWW-Mechanize-Firefox-0.74/t/50-mech-new.t">https://metacpan.org/source/CORION/WWW-Mechanize-Firefox-0.74/t/50-mech-new.t</a></div>
        <div> </div>
      </div>
      <div>хоть Try::Tiny я и люблю, но, когда нужно написать</div>
      <div>что-нибудь рабочее - плюешь на Perl Best Practice</div>
      <div>и пишешь, чтоб работало</div>
      <div>-- <br>
        <div>С уважением</div>
        <div>Николай Мишин<br>
          <div> </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
    </blockquote>
    <br>
  </body>
</html>