1

我的朋友给了我一个用 perl 编写的 VMware 脚本的想法,他说我应该有一种方法来更新脚本,比如-u.

问题是我不知道我该怎么做。关于如何通过互联网更新脚本,我唯一想到的就是 wget、我的亚马逊 S3 帐户或 FTP 服务器。

做某事最简单的方法是什么?

- 更新 -

我修改了我的问题,并更多地考虑了我想要完成的事情。

我想我非常想制作一个快速而肮脏的脚本,它对我将托管我的脚本的服务器或站点进行简单的版本检查。我不知道我可以使用哪些选项,但我现在只有一个 Dropbox 和一个亚马逊 S3 帐户。我想我可以用 S3 做点什么。

4

1 回答 1

3

这只是一个未经测试的初稿,但你会明白的:

use strict;
use warnings;
use Getopt::Std;  # for getopts
use LWP::Simple;  # for get

my %opt; getopts('u',%opt);

if ($opt{u}
&& -w $0
&& (my $newcontent = get("http://your.script.s/loca/tion"))
&& open(my $me, '<', $0))
{
    $/ = 0;
    my $currcontent = <$me>;
    close($me);
    if ($newcontent ne $currcontent)
    {
        warn "updating to latest version ...\n";
        if (open($me, '>', $0))
        {
           print $me $newcontent;
           close($me);
           exec $0, @ARGV;  # call it - if that's what you want to do
        }
    }
}

重构if嵌套,添加错误处理,使用更加谨慎$0等。

于 2011-03-31T07:35:18.543 回答