URL展開
[]http://www.xxxxx.com/[001-100].zip[]
的な記法でURLを展開できると楽ができそうな気がしたので、(その手のツールは星の数ほどあるにも拘らず)Perlで書いてみた。
#!/usr/bin/perl use strict; use warnings; while (<>) { chomp; my @num = (); my $chk = 0; my $prf = $_; my $mid = $_; my $suf = $_; my $cnt = 0; my $end = 0; my $zf_flag = 0; my $zf_work = 0; my $zf_zero = ""; my $err_msg = "連番URLが取得できません.\n"; if($mid =~ /\[.+?\]/) { $mid = $&; $mid = substr($mid,1,length($mid)-2); @num = split(/-/,$mid); $chk = @num; if($chk < 2) { die($err_msg); } else { $cnt = shift(@num); $end = shift(@num); } unless($cnt =~ /^\d*$/) { die($err_msg); } unless($end =~ /^\d*$/) { die($err_msg); } } else { die($err_msg); } if($prf =~ /.+?\[/) { $prf = $&; $prf = substr($prf,0,length($prf)-1); } else { die($err_msg); } if($suf =~ /\].*$/) { $suf = $&; $suf = substr($suf,1,length($suf)-1); } else { die($err_msg); } if(length($cnt) > 1) { if(substr($cnt,0,1) eq "0") { $zf_flag = 1; $cnt =~ s/0*//g; if(length($cnt) == 0) { $cnt = 0; } } } if($zf_flag == 0) { while($cnt <= $end) { print $prf . $cnt . $suf ."\n"; $cnt++; } } else { while($cnt <= $end) { while($zf_work < length($end)-length($cnt)) { $zf_zero = $zf_zero . "0"; $zf_work++; } print $prf . $zf_zero . $cnt . $suf . "\n"; $cnt++; $zf_work = 0; $zf_zero = ""; } } }
やはり自分の欲しいものを作るのは楽しい(´ω`)