类似于nodemon的工具,用于perl

时间:2015-11-07 15:43:17

标签: macos perl

是否有类似nodemon的东西,它监视文件更改并重新启动perl脚本?

我的perl脚本只是一个循环。

我尝试谷歌,但结果是mod_perl或无关。

有什么想法吗?

我正在使用Mac OS

1 个答案:

答案 0 :(得分:3)

我不知道像perl的nodemon这样的工具,除非有一个工具在更改时通常重新启动任何程序。这是我一起敲的一个。

#!/usr/bin/env perl

use strict;
use warnings;
use v5.10;

use File::Monitor;
use Child qw(child);

sub start_program {
    my $program = shift;

    return child {
        exec $^X, $program, @ARGV;
    };
}

sub restart_program {
    my($program, $child) = @_;

    $child->kill("TERM");

    return start_program($program);
}

sub monitor_program {
    my $program = shift;

    my $monitor = File::Monitor->new;

    my $child = start_program($program);

    say "PID: ".$child->pid;

    $monitor->watch($program, sub {
        $child = restart_program($program, $child);
    });

    while(1) {
        sleep 1;
        $monitor->scan;
    }
}

monitor_program(shift);

通过将File::Monitor替换为挂钩到OS X文件系统事件服务的东西,可以提高效率。