#!/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;