Как я могу добавить простое средство обновления для моих сценариев Perl? - PullRequest
1 голос
/ 31 марта 2011

Мой друг дал мне идею для моего скрипта VMware, написанного на Perl, он сказал, что у меня должен быть способ обновить скрипт с помощью аргумента типа -u.

Проблема в том, что я понятия не имею, как я мог это сделать. Единственное, что приходит в голову, как я могу обновить скрипт через Интернет, это что-то, wget, моя учетная запись amazon S3 или FTP-сервер.

Какой самый простой способ что-то сделать?

- обновление -

Я пересмотрел свой вопрос и больше думал о том, чего я пытаюсь достичь.

Полагаю, я в значительной степени пытаюсь создать быстрый и грязный скрипт, который выполняет простую проверку версии на сервере или на сайте, где я буду размещать свои скрипты. Я не знаю, какие варианты я могу использовать, но все, что я получил сейчас, - это Dropbox и учетная запись Amazon S3. Я думаю, я мог бы что-то сделать с S3.

1 Ответ

3 голосов
/ 31 марта 2011

Это просто первый тест, который не прошел тестирование, но вы поймете:

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 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...