请问下Perl能实现下载进度条么?

请问下Perl能实现下载进度条么?

在网上查了些资料, 多数进度条例子中下载工具都是wget, 但是当前项目中用的是原始的xcopy~

测试发现只要下载开始,xcopy就在目的路径下建立一个和源文件一样大小的文件,而不是像有些工具一样随着下载的进行变化文件大小;另外看perldoc的说明,在system运行外部命令的时候父进程是挂起的。由于这两个障碍的存在,是不是就不能用perl实现这种条件下的进度条了?

多谢各位!


QUOTE:
原帖由 SadEmperor 于 2008-11-10 16:57 发表
在网上查了些资料, 多数进度条例子中下载工具都是wget, 但是当前项目中用的是原始的xcopy~

测试发现只要下载开始,xcopy就在目的路径下建立一个和源文件一样大小的文件,而不是像有些工具一样随着下载的进行变化文件大小;另外看 perldoc的说明,在system运行外部命令的时候父进程是挂起的。由于这两个障碍的存在,是不是就不能用perl实现这种条件下的进度条了?

多谢各位!

当然可以。不过你不要问我该如何做,因为我不太愿意回答采用了激将法的问题。还是等别人吧。

如果虚心地问“如何在 Perl 下面实现进度条”,我倒是可以指点一下。
你也不必要再改口继续问我该如何做,因为要来的不香,强扭的不甜,还是继续等其他好心人吧。
......  我说错什么了么 .....

无语
既然 system 会阻塞父进程,那就不要用它了。
阻礙就在於閣下不多看書

perldoc -f open
Win32::Shell

use  Term:rogressBar;

[Copy to clipboard] [ - ]
CODE:
Let's look at the simple case of downloading a collection of pages from the web.

  #!/usr/bin/perl
  # turn on perl's safety features
  use strict;
  use warnings;
  # load the modules I need to know
  use Term::ProgressBar;
  use LWP::Simple qw(mirror);
  # work out what pages we're getting
  my @users = qw( 2shortplanks acme pudge torgox mschwern );
  # create a new progress bar
  my $no_pages = @users;
  my $progress = Term::ProgressBar->new({count => $no_pages});
  # get all the pages
  my $got = 0;
  foreach my $user (@users)
  {
    # work out the url
    my $url = "http://use.perl.org/~".$user."/journal/rss";
    # download the url and save it to disk
    mirror( $url, "${user}.rss" );
    # update the progress bar
    $progress->update(++$got);
  }
This creates a bar on the terminal that looks like this:

    0% [                                                            ]
Which slowly updates

   60% [====================================                        ]
Until it's done

  100% [============================================================]

很郁闷,在LINUX上试验成功了,但是在WINXP上始终装不上去这个模块,看INSTALL说明,也无提及WIN环境。
nmake报错,然后直接cpan -install  Term:rogressBar  还是不行。请教各位了!


QUOTE:
原帖由 lokchungk 于 2008-11-10 20:48 发表
阻礙就在於閣下不多看書

perldoc -f open
Win32::Shell

多谢ls的指点, 你说的open这块我基本上我大概看懂了一些,但是win32::shell这个找不到文档阿,这个包自带的文档我没找到具体的使用说明。 不知道是不是下错了?

另外现在的主进程被xcopy阻塞的问题基本上解决了,但是还有一个困难是不知道怎么能获取当前已经传输了多少字节,这方面的问题还希望大家都多指点一二。

再次感谢各位。
已经传输了多少字节 在HTTP头里面查看
现在用的是xcopy从局域网内的硬盘上直接拖, 网内目前没有HTTP/FTP等下载方式, 我没说清楚不好意思。