File: perlver-fast

package info (click to toggle)
libperl-minimumversion-fast-perl 0.22-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 152 kB
  • sloc: perl: 356; makefile: 7
file content (66 lines) | stat: -rw-r--r-- 1,414 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long qw(:config bundling passthrough);
use Perl::MinimumVersion::Fast;

GetOptions(
    "e:s" => \my $expr,
    "v"   => \my $verbose,
) or die "usage: $0 [file | -e expr]\n";

if (@ARGV) {
    report($_, $_) for @ARGV;
}
elsif ($expr) {
    report("-e", \$expr);
}
else {
    my $src = do { local $/; <> };
    report("STDIN", \$src);
}

sub report {
    my($in, $src) = @_;
    my $v = Perl::MinimumVersion::Fast->new($src);
    printf "%s: %s / %s\n", $in, $v->minimum_version, $v->minimum_syntax_version;
    $verbose or return;
    my @markers = $v->version_markers;
    while (@markers) {
        my($pv, $m) = splice @markers, 0, 2;
        printf "%-10s %s\n", $pv, $_ for @$m;
    }
}
__END__

=head1 NAME

perlver-fast - Minimum perl version detector

=head1 SYNOPSIS

reports minimum version and minimum syntax version. Adding C<-c> tries to
add detailed information.

Analyze from file list

    $ perlver-fast lib/Acme/Kensiro.pm t/00.load.t
    lib/Acme/Kensiro.pm: 5.008001 / 5.006
    t/00.load.t: 5.006 / 5.006

Analyze from STDIN

    $ perlver-fast < lib/Acme/Kensiro.pm
    STDIN: 5.008001 / 5.006

Analyze from expression

    $ perlver-fast -e '$a //= 42'
    -e: 5.010 / 5.010

    $ perlver-fast -v -e '$a //= 42'
    -e: 5.010 / 5.010
    5.010      //= operator

    $ perlver-fast -e 'use 5.24.1; $a //= 42'
    -e: 5.24 / 5.010