App-12567834

 view release on metacpan or  search on metacpan

12567834  view on Meta::CPAN

#!/usr/bin/perl
use 5.034 ; use warnings ; 
use Time::HiRes qw [ gettimeofday tv_interval ] ;
my ${ dt_start } = [ gettimeofday ] ; 
use Encode qw[ decode_utf8 encode_utf8 ] ; 
use Getopt::Std ; getopts ',c:2:b:p' , \my %o  ; 
use Term::ANSIColor qw[ color :constants ] ; $Term::ANSIColor::AUTORESET = 1 ;
use FindBin qw[ $Script ] ; 
use List::Util qw[ min max uniq ] ; 
use utf8 ; 
use Scalar::Util qw[ looks_like_number ] ; 

no warnings ; 
* d3 = sub { $_[0] =~ s/(?<=\d)(?=(\d\d\d)+($|\D))/,/gr } ;
use warnings ; 

$ARGV[0] //= 8 ; 
$o{c} //= 100 ;  # 「ページ指定」受付最大文字列長さ
$o{b} //= 1 ; 
 # 入力ファイルがもしもAdobe生成されたときに「ページサイズと処理」で「複数」の指定を受けたあとだったときに
 # 2や 4などの適切な値(1枚辺りの元のページ数)を指定する
my $p1 ; # 元のPDFファイルの最初のページ番号
my $p2 ; # 元のPDFファイルの最後のページ番号
my $p2a ; # $p2+1 以下の、 $p2a - $p1 が4の倍数となる最大の数。

# コマンド引数から、与え方に応じて3通りに、ページ数の最初と最後を取り出す。
($p1,$p2) = $ARGV[0] =~ m/(.*)(-|\.\.)(.*)/ ? ($1,$3) : exists $ARGV[1] ? @ARGV : (1,$ARGV[0]) ; 
exit if map {say "'$_' seems not a numbper."} grep { ! looks_like_number $_ } ($p1,$p2) ;
exit if  $p1 > $p2 && say "'$p1 <= $p2' does not hold." ;


 
# 最後に出力する紙の処理 および 出力枚数の算出
my $pr = ($p2-$p1+1) % 4 ; # reminder 余り
$p2a = $p2 - $pr + 1 ; 
my $q = ($p2a-$p1) / 4 ; 

my @P0 = () ; 



( run in 0.273 second using v1.01-cache-2.11-cpan-64827b87656 )