#!/usr/bin/perl -w
#-- FILE: jsearch.pl
#-- CODER: KUBO Takuya (kubo@ees.hokudai.ac.jp)
#--
#-- (C)opyright 2000 KUBO Takuya (kubo@ees.hokudai.ac.jp).
#-- All rights are reserved.
#-- Do not modify without amending copyright,
#-- distribute freely but retain this paragraph.
#--
#-- CHANGE: Wed Aug 9 16:30:05 2000
# MODIFY: Wed Aug 9 15:58:22 2000
use Jcode; # Jcode モジュールを使用します
use strict; # strict な (きっちりした) コードにします
# 使いかたの説明
sub usage {
print STDERR "\nUSAGE: jsearch.pl key file(s)\n\n";
exit 0;
}
# 引数の一つ目をとって
my $key = Jcode->new(shift @ARGV);
usage if ($key eq "" || $key eq "-h" || $key eq "--help");
# 結果を表示するサブルーチン
sub output {
my ($file, $number, $line) = @_;
my $head = "$file($number): ";
print $head;
my $spaces = ' ' x 8; # 8 個の空白
$line =~ s/\t/$spaces/g; # tab -> 8 個の空白
my $counter = length($head) + length($line) - 79;
while ($counter > 0) {# 出力する行が 79 文字 (?) になるよう
my $deleted = chop $line; # $line を削る
$counter -= length($deleted);
}
print "$line \n";
}
# ひとつずつファイルを開いて一行ずづ点検するループ
push @ARGV, "-" if @ARGV == 0; # ファイル名指定なければ標準入力
LOOP: foreach my $file (@ARGV) {
if (!open IN, $file) {
print STDERR "Can't open $file\n";
next LOOP;
}
my $number = 0;
while (<IN>) {
chomp;
$number++;
my $line = Jcode->new(\$_);
output $file, $number, $line
if $line =~ m/$key/;
}
close IN;
}
exit 0;