概要
jot.pl
シーケンシャルな数値を出力する.jotコマンドをperlで実装したもの.jotはBSD系OSには標準で入っているが,Linux系OSには入っていないことが多い.Linux環境においてもjotを利用できると幸せになれると考え,実装した.
残念ながら,jotと似たコマンドで,seqコマンドというものがLinuxにあることを,後に知ったわけだが.
使い方
次の使い方がある.
$ jot.pl 3
1
2
3
$ jot.pl 3 5
5
6
7
$ jot.pl 5 20 100
20
40
60
80
100
$ jot.pl -w "hoge %d" 3 5
hoge 5
hoge 6
hoge 7
コード
#! /usr/bin/env perl
$format = "%d\n";
if($ARGV[0] eq '--help') {
my $help = << ENDOFLINE;
JOT
output sequential number
command usage
jot [-w format] the-number [begin-number [end-number]]
option
-w specify format like and a '\%d' or '\%2& and so on
is available to print number
e.g.
% jot 3
1
2
3
% jot 3 5
5
6
7
% jot 5 20 100
20
40
60
80
100
% jot -w "hoge %d" 3
hoge 0
hoge 1
hoge 2
ENDOFLINE
open(LESS, "| less");
print LESS $help;
close(LESS);
exit 1;
}
elsif($ARGV[0] eq '-w') {
shift(@ARGV);
$format = shift(@ARGV). "\n";
}
if(@ARGV == 0 || $ARGV[0] eq '--help') {
print $help;
}
$times = $ARGV[0];
shift(@ARGV);
$begin = 1;
if(@ARGV) {
$begin = shift(@ARGV);
}
if(@ARGV) {
$end = shift(@ARGV);
$eflag = 1;
}
if($eflag) {
my $d = ($end - $begin)/($times - 1);
for($i=0; $i<$times; $i++) {
printf($format, $begin + $d*$i);
}
}
else {
for($i=0; $i<$times; $i++) {
printf($format, $begin + $i);
}
}