我的好友给了我一个用perl编写的VMware脚本的想法,他说我应该有一种方法用-u
之类的参数来更新脚本。
问题是我不知道如何做到这一点。关于我如何通过互联网更新脚本的唯一想法是wget,我的亚马逊S3帐户或FTP服务器。
做最简单的事情是什么?
- 更新 -
我修改了我的问题并且正在考虑更多关于我想要完成的事情。
我想我正在尝试制作一个快速而又脏的脚本,它可以对我将托管脚本的服务器或站点进行简单的版本检查。我不知道我可以使用哪些选项,但我现在得到的只是一个Dropbox和一个亚马逊S3账号。我想我可以用S3做点什么。
答案 0 :(得分: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
更加谨慎等等。