在ChinaUnix.net也有发过帖子 不知为何无人回应
无cookie情况下输入网站 并点击下载 图片下载下来了
但是
windows 对话框 Perl Command Line Interpreter 遇到问题需要关闭。我们对此引起的不便表示抱歉。
perl
显示错误如下:
Attempt to free non-existent shared string '_TK_RESULT_', Perl
interpreter: 0x2e3642c at C:/Perl/lib/Tk.pm line 252.
Attempt to free non-existent shared string '_TK_RESULT_',
Perlinterpreter: 0x2e3642c at C:/Perl/lib/Tk/Widget.pm line 98
duringglobal destruction.
Free to wrong pool 2e33d20 not 284fb0 at C:/Perl/lib/Tk/Widget.pm line
98 during global destruction.
#!/usr/bin/perl
use strict;
use warnings;
use threads;
my $cks;
my $url;
my $filename;
my $cks_enter;
my $url_enter;
my $fnm_enter;
sub dd{
my $thr1 = threads->new(\&d);
$thr1->detach();
}
use Tk;
my $mw = MainWindow->new();
$mw->resizable( 0,0 );
$mw->title("test");
my $frame = $mw->Frame(-borderwidth => 2,-relief => 'groove')->pack();
my $bttn = $mw->Button(-text => "Down",-command => \&dd)->pack(-side
=> 'left');
$frame->Label(-text => 'Cookies:')->pack();
$cks_enter = $frame->Entry(-textvariable => \$cks,-width => 50)->pack
();
$frame->Label(-text => 'URL:')->pack();
$url_enter = $frame->Entry(-textvariable => \$url)->pack(-expand => 1,
-fill => 'x');
$frame->Label(-text => 'Filename:')->pack();
$fnm_enter = $frame->Entry(-textvariable => \$filename)->pack(-expand
=> 1, -fill => 'x');
MainLoop;
sub d {
$cks = $cks_enter->get();
chomp($cks);
$url = $url_enter->get();
chomp($url);
$filename = $fnm_enter->get();
chomp($filename);
use LWP::UserAgent;
my @headers = (
'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; EN; rv:
1.9.0.11) Gecko/2009060215 Firefox/3.5',
'cookie' => "$cks",
);
my $ua = LWP::UserAgent->new();
my $req = $ua->get($url,@headers);
my $cont = $req->content;
open PIC, ">$filename";
binmode(PIC);
print PIC "$cont\n";
close PIC;
}
疑问在这儿:
1. 此处的 threads 是指 生成并维持tk GUI需要一个threads, 而 下载 需要另外一个 是么?
2. 如程序中所示, 目前也是两个threads么? gui的这个没有声明 但是确实是存在的?
3. 错误信息中提到了 共享变量的问题,是指 $cks、$url、$filename、$cks_enter、$url_enter、
$fnm_enter这些变量都需要shared么 因为 dd这个线程中和 产生的gui中都有用到这些变量或对象?还是说需要shared其他的变
量?
4. Thread:: Queue 此处需要使用么?
非常感谢
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论