Как я получаю вывод завихрения в переменную в Perl, если я вызываю его с помощью обратных галочек?

Вот так я наконец и сделал! Вы можете нанести слой (полноразмерный) на ваше тело с высоким z-индексом и, конечно, скрытый. Вы сделаете его видимым, когда окно открыто, сфокусируете его на щелчке по родительскому окну (слою) и, наконец, исчезните, когда открытое окно будет закрыто или отправлено, или что-то еще.

      .layer
  {
        position: fixed;
        opacity: 0.7;
        left: 0px;
        top: 0px;
        width: 100%;
        height: 100%;
        z-index: 999999;
        background-color: #BEBEBE;
        display: none;
        cursor: not-allowed;
  }

и слой в теле:

                <div class="layout" id="layout"></div>

функция, которая открывает всплывающее окно:

    var new_window;
    function winOpen(){
        $(".layer").show();
        new_window=window.open(srcurl,'','height=750,width=700,left=300,top=200');
    }

, сохраняя фокус в новом окне:

         $(document).ready(function(){
             $(".layout").click(function(e) {
                new_window.focus();
            }
        });

и в открывшемся окне:

    function submit(){
        var doc = window.opener.document,
        doc.getElementById("layer").style.display="none";
         window.close();
    }   

   window.onbeforeunload = function(){
        var doc = window.opener.document;
        doc.getElementById("layout").style.display="none";
   }

Надеюсь, это поможет: -)

8
задан Eddie 20 June 2009 в 00:49
поделиться

7 ответов

Вероятно, он отправляет свои данные в stderr. Попробуйте

my $foo = `curl yadd yadda 2>&1`;
13
ответ дан 5 December 2019 в 06:54
поделиться

Вы также можете рассмотреть возможность просмотра LWP :: UserAgent или даже LWP :: Simple .

5
ответ дан 5 December 2019 в 06:54
поделиться

What ты действительно хочешь заняться? Любой ценой использовать curl или получить содержимое веб-страницы?

Более изощренный способ сделать это (который не полагается на внешние программы, которые могут или не могут быть установлены на следующем компьютере, где вам нужно это сделать) будет:

use LWP::Simple;

my $content = get("http://stackoverflow.com/questions/1015438/")
   or die "no such luck\n";

Если вы хотите понять, почему GET не удалось, или захватить несколько страниц с одного и того же сайта, вам потребуется немного больше оборудования. perldoc lwpcook поможет вам начать работу.

4
ответ дан 5 December 2019 в 06:54
поделиться

В оболочке 2> означает перенаправление fileno 2. Fileno 2 - это всегда то, что программа видит как stderr. Точно так же fileno 0 - это стандартный ввод, а fileno 1 - это стандартный вывод. Итак, когда вы говорите 2> & 1 , вы говорите оболочке перенаправить stderr (fileno 2) в stdout (fileno 1). Поскольку оператор обратных кавычек использует оболочку для выполнения указанной вами команды, вы можете использовать перенаправление оболочки, поэтому

my $foo = `curl yadda yadda 2>&1`;

сообщает curl, что нужно перенаправить свой вывод в stdout, а поскольку оператор обратных кавычек перехватывает stdout, вы получаете то, что искали .

3
ответ дан 5 December 2019 в 06:54
поделиться

Попробуйте следующее:

$var = `curl "http://localhost" 2>/dev/null`; 
print length($var)

curl отображает информацию о ходе выполнения на stderr, перенаправление ее в / dev / null упрощает просмотр того, что происходит.

0
ответ дан 5 December 2019 в 06:54
поделиться

Это работает в моей системе:

#!/usr/bin/perl

use strict;
use warnings;

my $output = `curl www.unur.com`;

print $output;

__END__

C:\> z1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

и т. Д.

0
ответ дан 5 December 2019 в 06:54
поделиться

Может случиться так, что часть вывода, которую вы хотите захватить, имеет стандартную ошибку, а не стандартную ошибку. Попробуйте это:

my $foo = system "curl http://www.stackoverflow.com";
print $foo;
-1
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: