argra****@users*****
argra****@users*****
2008年 6月 2日 (月) 04:06:34 JST
Index: docs/perl/5.10.0/perlfaq4.pod diff -u docs/perl/5.10.0/perlfaq4.pod:1.4 docs/perl/5.10.0/perlfaq4.pod:1.5 --- docs/perl/5.10.0/perlfaq4.pod:1.4 Thu May 29 22:35:19 2008 +++ docs/perl/5.10.0/perlfaq4.pod Mon Jun 2 04:06:33 2008 @@ -309,11 +309,9 @@ =end original -As always with Perl there is more than one way to do it. Below are a -few examples of approaches to making common conversions between number -representations. This is intended to be representational rather than -exhaustive. -(TBT) +Perl ではいつものことですが、これを行うには複数の方法があります。 +以下は、一般的な数値表現の変換を行うための手法のいくつかの例です。 +これは完全性よりも説明性を意図しています。 =begin original @@ -326,11 +324,9 @@ =end original L<perlfaq4> の後の方での例では CPAN にある C<Bit::Vector> を使っています。 -The reason you might choose C<Bit::Vector> over the -perl built in functions is that it works with numbers of ANY size, -that it is optimized for speed on some operations, and for at least -some programmers the notation might be familiar. -(TBT) +perl 組み込みの関数よりも C<Bit::Vector> を選択する理由は、 +どんな大きさの数でも動作し、いくつかの操作では速度のために最適化されていて、 +少なくともいくらかのプログラマにとっては表記がわかりやすいからです。 =over 4 @@ -893,10 +889,9 @@ =end original -Hence you derive the following simple function to abstract -that. It selects a random integer between the two given -integers (inclusive), For example: C<random_int_between(50,120)>. -(TBT) +従って、これを抽象化するために以下のサンプル関数を導き出します。 +これは与えられた二つの整数を含む範囲のランダムな整数を選択します。 +例えば: C<random_int_between(50,120)> sub random_int_between { my($min, $max) = @_; @@ -1163,15 +1158,15 @@ =end original -Most people try to use the time rather than the calendar to figure out -dates, but that assumes that days are twenty-four hours each. For -most people, there are two days a year when they aren't: the switch to -and from summer time throws this off. Let the modules do the work. -(TBT) +ほとんどの人は日付を計算するのにカレンダーではなく時刻を使おうとしますが、 +これは 1 日が 24 時間であることを仮定しています。 +ほとんどの人々にとって、そうではない日が 2 日あります: +夏時間が始まる日と終わる日はこれを狂わせます。 +この作業はモジュールにさせましょう。 =head2 Does Perl have a Year 2000 problem? Is Perl Y2K compliant? -(Perlには2000年問題があるのですか? Perl は 2000 年対応ですか?) +(Perl には 2000 年問題があるのですか? Perl は 2000 年対応ですか?) =begin original @@ -1279,11 +1274,11 @@ =end original -There are many ways to ensure that values are what you expect or -want to accept. Besides the specific examples that we cover in the -perlfaq, you can also look at the modules with "Assert" and "Validate" -in their names, along with other modules such as C<Regexp::Common>. -(TBT) +値があなたの予測している、または受け入れたいものであることを保証するには +多くの方法があります。 +perlfaq でカバーする特定の例の他に、名前に "Assert" や "Validate" がある +モジュールや、C<Regexp::Common> のようなその他のモジュールを +見ることもできます。 =begin original @@ -1346,12 +1341,13 @@ =end original -You can use the substitution operator to find pairs of characters (or -runs of characters) and replace them with a single instance. In this +文字の組(または文字の並び)を探して、それを一つの実体に置き換えるには +置換演算子が使えます。 +In this substitution, we find a character in C<(.)>. The memory parentheses store the matched character in the back-reference C<\1> and we use -that to require that the same thing immediately follow it. We replace -that part of the string with the character in C<$1>. +that to require that the same thing immediately follow it. +文字列の一部を C<$1> にある文字で置き換えます。 (TBT) s/(.)\1/$1/g; @@ -1407,7 +1403,7 @@ これは L<perlref> に文書化されていて、もっとも読みやすいものでは ありませんが、動きます。 -In each of these examples, we call the +これらの例のそれぞれにおいて、we call the function inside the braces used to dereference a reference. もし複数の返り値がある場合、無名配列を構築して、デリファレンスします。 この場合、関数をリストコンテキストで呼び出します。 @@ -1426,12 +1422,12 @@ =end original -If we want to call the function in scalar context, we have to do a bit -more work. We can really have any code we like inside the braces, so +スカラコンテキストで関数を呼び出したい場合、もう少し作業が必要です。 +We can really have any code we like inside the braces, so we simply have to end with the scalar reference, although how you do -that is up to you, and you can use code inside the braces. Note that -the use of parens creates a list context, so we need C<scalar> to -force the scalar context on the function: +that is up to you, and you can use code inside the braces. +かっこはリストコンテキストを作成するので、関数内でスカラコンテキストを +強制するために C<scalar> であることに注意してください: (TBT) print "The time is ${\(scalar localtime)}.\n" @@ -1461,10 +1457,11 @@ =end original -C<Interpolation> module can also do a lot of magic for you. You can +C<Interpolation> モジュールもまたあなたのために多くの魔法を使います。 +You can specify a variable name, in this case C<E>, to set up a tied hash that -does the interpolation for you. It has several other methods to do this -as well. +does the interpolation for you. +同じようにこれを行うその他のいくつかのメソッドを持っています。 (TBT) use Interpolation E => 'eval'; @@ -1506,11 +1503,10 @@ 複数キャラクターに囲まれたものの場合は、 C</alpha(.*?)omega/> のようなパターンが必要となるでしょう。 しかし、ネストしたパターンを扱うようなものはありませんし、できません。 -For balanced expressions using C<(>, C<{>, C<[> or -C<< < >> as delimiters, use the CPAN module Regexp::Common, or see -L<perlre/(??{ code })>. +C<(>, C<{>, C<[>, C<< < >> のいずれかのバランス表現をデリミタとして +使っている場合、CPAN にある Regexp::Common モジュールを使うか、 +L<perlre/(??{ code })> を参照してください。 その他の場合では、パーサーを書く必要があります。 -(TBT) =begin original @@ -1676,10 +1672,9 @@ =end original -You can access the first characters of a string with substr(). -To get the first character, for example, start at position 0 -and grab the string of length 1. -(TBT) +文字列の先頭の文字へは substr() でアクセスできます。 +例えば、最初の文字を得るには、位置 0 から始めて、長さ 1 の文字列を +取得します。 $string = "Just another Perl Hacker"; $first_char = substr( $string, 0, 1 ); # 'J' @@ -2056,7 +2051,7 @@ =end original -In this regular expression, the alternation matches either at the +この正規表現において、the alternation matches either at the beginning or the end of the string since the anchors have a lower precedence than the alternation. With the C</g> flag, the substitution makes all possible matches, so it gets both. Remember, the trailing @@ -2083,12 +2078,11 @@ =end original -For a multi-line string, you can apply the regular expression -to each logical line in the string by adding the C</m> flag (for -"multi-line"). With the C</m> flag, the C<$> matches I<before> an -embedded newline, so it doesn't remove it. It still removes the -newline at the end of the string. -(TBT) +複数行の文字列に対しては、C</m> ("multi-line") フラグを追加することにより、 +文字列中の論理行毎に正規表現を適用できます。 +C</m> フラグをつけると、C<$> 組み込まれた改行の I<前に> マッチングするので、 +これを取り除けません。 +文字列の末尾の改行は取り除けます。 $string =~ s/^\s+|\s+$//gm; @@ -2104,9 +2098,11 @@ Remember that lines consisting entirely of whitespace will disappear, since the first part of the alternation can match the entire string -and replace it with nothing. If need to keep embedded blank lines, -you have to do a little more work. Instead of matching any whitespace -(since that includes a newline), just match the other whitespace. +and replace it with nothing. +もし組み込まれている空行を保存したいなら、さらにもう少し作業をする必要が +あります。 +全ての空白(改行を含みます)にマッチングさせる代わりに、単にその他の +空白にマッチングさせます。 (TBT) $string =~ s/^[\t\f ]+|[\t\f ]+$//mg; @@ -2233,10 +2229,8 @@ =end original -You can use C<split> if the columns are separated by whitespace or -some other delimiter, as long as whitespace or the delimiter cannot -appear as part of the data. -(TBT) +桁が空白やその他のデリミタで分けられていて、データの一部としては +空白やデリミタが現れないなら、C<split> が使えます。 my $line = ' fred barney betty '; my @columns = split /\s+/, $line; @@ -2310,10 +2304,9 @@ =end original Text::Soundex モジュールが使えます。 -If you want to do fuzzy or close -matching, you might also try the C<String::Approx>, and -C<Text::Metaphone>, and C<Text::DoubleMetaphone> modules. -(TBT) +あいまいマッチングや近傍マッチングを行いたいなら、 +C<String::Approx>, C<Text::Metaphone>, C<Text::DoubleMetaphone> といった +モジュールを試すのも良いでしょう。 =head2 How can I expand variables in text strings? @@ -2353,8 +2346,8 @@ However, for the one-off simple case where I don't want to pull out a full templating system, I'll use a string that has two Perl scalar -variables in it. In this example, I want to expand C<$foo> and C<$bar> -to their variable's values: +variables in it. +この例では、C<$foo> と C<$bar> をその変数の値に展開したいとします: (TBT) my $foo = 'Fred'; @@ -2371,12 +2364,11 @@ =end original -One way I can do this involves the substitution operator and a double -C</e> flag. The first C</e> evaluates C<$1> on the replacement side and -turns it into C<$foo>. The second /e starts with C<$foo> and replaces -it with its value. C<$foo>, then, turns into 'Fred', and that's finally -what's left in the string: -(TBT) +これを行う一つの方法は、置換演算子と二つの C</e> フラグを使うものです。 +一つ目の C</e> は置き換え側の C<$1> を評価して C<$foo> に変えます。 +二つ目の C</e> は C<$foo> をその値に変えます。 +従って、C<$foo> は 'Fred' に変わって、それが結局最終的に文字列に +残されるものになります: $string =~ s/(\$\w+)/$1/eeg; # 'Say hello to Fred and Barney' @@ -2394,9 +2386,9 @@ The C</e> will also silently ignore violations of strict, replacing undefined variable names with the empty string. Since I'm using the C</e> flag (twice even!), I have all of the same security problems I -have with C<eval> in its string form. If there's something odd in -C<$foo>, perhaps something like C<@{[ system "rm -rf /" ]}>, then -I could get myself in trouble. +have with C<eval> in its string form. +もし C<$foo> に(おそらく C<@{[ system "rm -rf /" ]}> のような)変なものが +入っていたら、トラブルに出会うことになります。 (TBT) =begin original @@ -2409,12 +2401,11 @@ =end original -To get around the security problem, I could also pull the values from -a hash instead of evaluating variable names. Using a single C</e>, I -can check the hash to ensure the value exists, and if it doesn't, I -can replace the missing value with a marker, in this case C<???> to -signal that I missed something: -(TBT) +セキュリティ問題を避けるために、変数名を評価するのではなくハッシュから +値を取ってくることもできます。 +C</e> を一つ使って、ハッシュに値があることを確認し、もしなければ、 +値をマーカーに置き換えます; この場合は、C<???> が何かがおかしいことの +印です; my $string = 'This has $foo and $bar'; @@ -2438,7 +2429,7 @@ The problem is that those double-quotes force stringification--coercing numbers and references into strings--even when you don't want them to be strings. Think of it this way: -double-quote expansion is used to produce new strings. If you already +sdouble-quote expansion is used to produce new strings. If you already have a string, why do you need more? =end original @@ -2471,7 +2462,7 @@ =end original あなたはトラブルに巻き込まれることになるでしょう。 -これらは(99.8%は)、より単純、かつより直接的に書くべきなのです。 +これらは(99.8% は)、より単純、かつより直接的に書くべきなのです。 print $var; $new = $old; @@ -2979,10 +2970,9 @@ =end original -These methods guarantee fast individual tests but require a re-organization -of the original list or array. They only pay off if you have to test -multiple values against the same array. -(TBT) +これらのメソッドは個々のテストの速さが保証されていますが、 +元のリストや配列の再構成が必要です。 +同じ配列に対して複数の値をテストする必要がある場合にのみ元が取れます。 =begin original @@ -3016,11 +3006,10 @@ =end original -If speed is of little concern, the common idiom uses grep in scalar context -(which returns the number of items that passed its condition) to traverse the -entire list. This does have the benefit of telling you how many matches it -found, though. -(TBT) +速度が問題ではないなら、一般的な方法は、リスト全体をトラバースするために +grep をスカラコンテキストで使う(これで条件をパスしたアイテムの数を返します) +ことです。 +しかし、これには何回マッチングしたのかを知らせるという利点があります。 my $is_there = grep $_ eq $whatever, @array; @@ -3383,10 +3372,8 @@ =end original -Note that the above implementation shuffles an array in place, -unlike the C<List::Util::shuffle()> which takes a list and returns -a new shuffled list. -(TBT) +C<List::Util::shuffle()> はリストを受け取って、混ぜられた新しいリストを +返しますが、上記の実装は配列そのものを混ぜることに注意してください。 =begin original @@ -3456,9 +3443,7 @@ =end original -which can also be done with C<map()> which is made to transform -one list into another: -(TBT) +リストを他のリストに変換する C<map()> を使っても行えます: @volumes = map {$_ ** 3 * (4/3) * 3.14159} @radii; @@ -3471,12 +3456,9 @@ =end original -同じことをハッシュの値に対して行いたいのであれば、 -C<values> を使うことはできません。 -As of Perl 5.6 -the values are not copied, so if you modify $orbit (in this -case), you modify the value. -(TBT) +同じことをハッシュの値に対して行いたいのであれば、C<values> は使えません。 +Perl 5.6 以降では値はコピーされないので、(この場合では) $orbit を変更すると、 +値を変更することになります。 for $orbit ( values %orbits ) { ($orbit **= 3) *= (4/3) * 3.14159; @@ -3534,10 +3516,10 @@ =end original -Use the C<List::Permutor> module on CPAN. If the list is actually an -array, try the C<Algorithm::Permute> module (also on CPAN). It's -written in XS code and is very efficient: -(TBT) +CPAN にある C<List::Permutor> モジュールを使ってください。 +リストが実際には配列なら、C<Algorithm::Permute> モジュール(これも CPAN に +あります)を試してください。 +これは XS コードで書かれていて、とても効率的です: use Algorithm::Permute; @@ -3607,13 +3589,11 @@ =end original -The C<Algorithm::Loops> module also provides the C<NextPermute> and -C<NextPermuteNum> functions which efficiently find all unique permutations -of an array, even if it contains duplicate values, modifying it in-place: -if its elements are in reverse-sorted order then the array is reversed, -making it sorted, and it returns false; otherwise the next -permutation is returned. -(TBT) +C<Algorithm::Loops> モジュールも the C<NextPermute> と C<NextPermuteNum> の +関数を提供していて、重複した値が含まれていても、その場で変更して、配列の +全てのユニークな順列を探します: +もしその要素が逆順にソートされているなら、配列を反転させて、ソートを +行い、偽を返します; さもなければ次の順列を返します。 =begin original @@ -3622,9 +3602,8 @@ =end original -C<NextPermute> uses string order and C<NextPermuteNum> numeric order, so -you can enumerate all the permutations of C<0..9> like this: -(TBT) +C<NextPermute> は文字列順を使い、C<NextPermuteNum> は数値順を使うので、 +C<0..9> の全ての順番を数え上げるには以下のようにします: use Algorithm::Loops qw(NextPermuteNum); @@ -3730,10 +3709,10 @@ =end original -See the F<sort> article in the "Far More Than You Ever Wanted -To Know" collection in http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz for -more about this approach. -(TBT) +この手法に関する更なる情報については +http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz にある +"Far More Than You Ever Wanted To Know" コレクションの F<sort> という記事を +参照してください。 =begin original @@ -3945,10 +3924,9 @@ =end original -There are a couple of ways that you can process an entire hash. You -can get a list of keys, then go through each key, or grab a one -key-value pair at a time. -(TBT) +ハッシュ全体を処理するには二つの方法があります。 +キーのリストを取得してからキー毎に処理するか、一度に一つのキー-値の +ペアを取得するかです。 =begin original @@ -3958,10 +3936,9 @@ =end original -To go through all of the keys, use the C<keys> function. +全てのキーを得るには、C<keys> 関数を使います。 ハッシュの全てのキーを展開してリストの形で返します。 それから処理したい特定のキーの値を取得します。 -(TBT) foreach my $key ( keys %hash ) { my $value = $hash{$key} @@ -3992,10 +3969,9 @@ =end original -Or, you might want to only process some of the items. If you only want -to deal with the keys that start with C<text:>, you can select just -those using C<grep>: -(TBT) +あるいは、アイテムの一部に対してのみ処理したいかもしれません。 +キーが C<text:> で始まるキーのみ扱いたいなら、単に C<grep> を使って +選択できます: foreach my $key ( grep /^text:/, keys %hash ) { my $value = $hash{$key} @@ -4011,10 +3987,8 @@ =end original ハッシュがとても大きい場合、キーの長いリストを作りたくないかもしれません。 -メモリを節約するために、 -you can grab on key-value pair at a time using -C<each()>, which returns a pair you haven't seen yet: -(TBT) +メモリを節約するために、まだ取得していないキー-値の組を返す C<each()> を +使って組を取得できます: while( my( $key, $value ) = each( %hash ) ) { ... @@ -4187,12 +4161,10 @@ =end original ハッシュをソートするために、キーから始めます。 -この例では、we give the list of -keys to the sort function which then compares them ASCIIbetically (which -might be affected by your locale settings). The output list has the keys -in ASCIIbetical order. Once we have the keys, we can go through them to -create a report which lists the keys in ASCIIbetical order. -(TBT) +この例では、キーのリストをソート関数に渡して、それから ASCII 順で比較します +(ロケール設定の影響を受けるかもしれません)。 +出力リストは ASCII 順のキーのリストです。 +キーを得たら、ASCII 順にキーを並べたレポートを作成します。 my @keys = sort { $a cmp $b } keys %hash; @@ -4209,10 +4181,8 @@ =end original -We could get more fancy in the C<sort()> block though. Instead of -comparing the keys, we can compute a value with them and use that -value as the comparison. -(TBT) +しかし、C<sort()> ブロックでもっと面白いことができます。 +キーを比較する代わりに、これらの値を計算してその値を比較に使います。 =begin original @@ -4252,10 +4222,9 @@ =end original -If we want to sort by the hash value instead, we use the hash key -to look it up. We still get out a list of keys, but this time they -are ordered by their value. -(TBT) +もし代わりにハッシュの値でソートしたい場合、それを探すためにハッシュキーを +使います。 +やはりキーのリストを使いますが、今度はその値でソートします。 my @keys = sort { $hash{$a} <=> $hash{$b} } keys %hash; @@ -4498,10 +4467,9 @@ =end original -You can use the C<keys> or C<values> functions to reset C<each>. To -simply reset the iterator used by C<each> without doing anything else, -use one of them in void context: -(TBT) +C<each> をリセットするために C<keys> 関数か C<values> 関数が使えます。 +他に何もせずに単に C<each> で使われているイテレータをリセットするには、 +これらの一つを無効コンテキストで使います: keys %hash; # resets iterator, nothing else. values %hash; # resets iterator, nothing else. @@ -4711,15 +4679,15 @@ =end original -Hash keys are strings, so you can't really use a reference as the key. -When you try to do that, perl turns the reference into its stringified -form (for instance, C<HASH(0xDEADBEEF)>). From there you can't get -back the reference from the stringified form, at least without doing -some extra work on your own. -Also remember that hash keys must be -unique, but two different variables can store the same reference (and -those variables can change later). -(TBT) +ハッシュキーは文字列なので、実際にリファレンスをキーとして使うことは +できません。 +もしそうしようとすると、perl はリファレンスを(例えば C<HASH(0xDEADBEEF)> の +形に)文字列化 します。 +少なくとも自分自身で追加の作業をしない限り、文字列化された形から +リファレンスを得ることはできません。 +ハッシュキーはユニークでなければなりませんが、二つの異なる変数が +同じリファレンスを保管できる(そしてこれらの変数は後で変更できる)ことも +忘れないでください。 =begin original Index: docs/perl/5.10.0/perlfaq5.pod diff -u docs/perl/5.10.0/perlfaq5.pod:1.2 docs/perl/5.10.0/perlfaq5.pod:1.3 --- docs/perl/5.10.0/perlfaq5.pod:1.2 Thu May 29 22:35:19 2008 +++ docs/perl/5.10.0/perlfaq5.pod Mon Jun 2 04:06:33 2008 @@ -73,15 +73,15 @@ =end original -If you want your output to be sent immediately when you execute -C<print()> or C<write()> (for instance, for some network protocols), -you must set the handle's autoflush flag. This flag is the Perl -variable C<$|> and when it is set to a true value, Perl will flush the -handle's buffer after each C<print()> or C<write()>. Setting C<$|> -affects buffering only for the currently selected default filehandle. -You choose this handle with the one argument C<select()> call (see -L<perlvar/$E<verbar>> and L<perlfunc/select>). -(TBT) +(例えば、何らかのネットワークプロトコルのために) +C<print()> や C<write()> の実行後直ちに出力したいなら、そのハンドルの +自動フラッシュフラグをセットしなければなりません。 +このフラグは Perl 変数C<$|> で、これを真の値にセットすると、Perl は +C<print()> や C<write()> の後にハンドルのバッファをフラッシュします。 +C<$|> の設定は現在選択されているデフォルトファイルハンドルの +バッファリングにのみ影響を与えます。 +このハンドルは 1 引数の C<select()> 呼び出しで選択します +(L<perlvar/$E<verbar>> と L<perlfunc/select> を参照してください)。 =begin original @@ -105,10 +105,9 @@ =end original -Some modules offer object-oriented access to handles and their -variables, although they may be overkill if this is the only thing you -do with them. You can use C<IO::Handle>: -(TBT) +ハンドルとその変数にオブジェクト指向でアクセスできるようにするモジュールも +ありますが、あなたが単にこれだけをしたいなら大仰過ぎるかもしれません。 +C<IO::Handle> が使えます: use IO::Handle; open my( $printer ), ">", "/dev/printer"); # but is this? @@ -134,9 +133,8 @@ =end original -You can also flush an C<IO::Handle> object without setting -C<autoflush>. Call the C<flush> method to flush the buffer yourself: -(TBT) +C<autoflush> をセットせずに C<IO::Handle> オブジェクトをフラッシュできます。 +バッファ自身をフラッシュするために C<flush> メソッドを呼び出してください: use IO::Handle; open my( $printer ), ">", "/dev/printer"); @@ -168,13 +166,11 @@ =end original -The basic idea of inserting, changing, or deleting a line from a text -file involves reading and printing the file to the point you want to -make the change, making the change, then reading and printing the rest -of the file. Perl doesn't provide random access to lines (especially -since the record input separator, C<$/>, is mutable), although modules -such as C<Tie::File> can fake it. -(TBT) +テキストファイルの行を挿入、変更、削除するための基本的な考え方は、 +ファイルを変更したい地点まで読み込んで表示し、変更を行い、ファイルの +残りを読み込んで表示するというものです。 +(特にレコード入力セパレータ C<$/> は変更可能なので) Perl は行に対する +ランダムアクセスは提供していませんが、C<Tie::File> はそれを見せかけます。 =begin original @@ -183,9 +179,8 @@ =end original -A Perl program to do these tasks takes the basic form of opening a -file, printing its lines, then closing the file: -(TBT) +この作業をする Perl プログラムは、ファイルを開いて、一行毎に表示し、 +ファイルを閉じるという基本的な形をとります: open my $in, '<', $file or die "Can't read old file: $!"; open my $out, '>', "$file.new" or die "Can't write new file: $!"; @@ -204,9 +199,7 @@ =end original -Within that basic form, add the parts that you need to insert, change, -or delete lines. -(TBT) +基本形の中に、行の追加、修正、削除という必要な作業を追加します。 =begin original @@ -240,11 +233,10 @@ =end original -To change existing lines, insert the code to modify the lines inside -the C<while> loop. In this case, the code finds all lowercased -versions of "perl" and uppercases them. The happens for every line, so -be sure that you're supposed to do that on every line! -(TBT) +既にある行を変更するには、C<while> の中に行を変更するコードを追加します。 +今回の場合、コードは小文字の "perl" を探してそれを大文字にします。 +これは全ての行に対して起こるので、全ての行に対してこれを行いたいということを +確認してください! open my $in, '<', $file or die "Can't read old file: $!"; open my $out, '>', "$file.new" or die "Can't write new file: $!"; @@ -268,11 +260,10 @@ =end original -To change only a particular line, the input line number, C<$.>, is -useful. First read and print the lines up to the one you want to -change. Next, read the single line you want to change, change it, and -print it. After that, read the rest of the lines and print those: -(TBT) +特定の行だけ変更するには、入力行番号 C<$.> が便利です。 +まず、変更したい行まで読み込んで表示します。 +次に、変更したい行を 1 行読んで、変更し、表示します。 +その後、残りの行を読み込んで表示します: while( <$in> ) # print the lines before the change { @@ -297,10 +288,9 @@ =end original -To skip lines, use the looping controls. The C<next> in this example -skips comment lines, and the C<last> stops all processing once it -encounters either C<__END__> or C<__DATA__>. -(TBT) +行を読み飛ばすには、ループ制御を使います。 +この例の C<next> はコメント行を読み飛ばし、C<last> は、C<__END__> か +C<__DATA__> のどちらかに出会った後は全ての処理を停止します。 while( <$in> ) { @@ -318,8 +308,8 @@ =end original Do the same sort of thing to delete a particular line by using C<next> -to skip the lines you don't want to show up in the output. This -example skips every fifth line: +to skip the lines you don't want to show up in the output. +この例は 5 行毎に読み飛ばします: (TBT) while( <$in> )