argra****@users*****
argra****@users*****
2008年 5月 22日 (木) 05:32:28 JST
Index: docs/perl/5.10.0/perlfaq1.pod diff -u docs/perl/5.10.0/perlfaq1.pod:1.1 docs/perl/5.10.0/perlfaq1.pod:1.2 --- docs/perl/5.10.0/perlfaq1.pod:1.1 Fri Apr 18 20:09:17 2008 +++ docs/perl/5.10.0/perlfaq1.pod Thu May 22 05:32:28 2008 @@ -164,11 +164,10 @@ =end original -There is often a matter of opinion and taste, and there isn't any one -answer that fits anyone. In general, you want to use either the current -stable release, or the stable release immediately prior to that one. -Currently, those are perl5.10.x and perl5.8.x, respectively. -(TBT) +これはしばしば見解と嗜好の問題であり、誰にでも適応する一つの答えというものは +ありません。 +一般的に、現在の安定版か、その一つ前の安定版を使いたいでしょう。 +現在のところ、それぞれ perl5.10.x と perl5.8.x となります。 =begin original @@ -213,9 +212,8 @@ =end original -The Perl community is geared toward supporting the most recent releases, -so you'll have an easier time finding help for those. -(TBT) +Perl のコミュニティは最新リリースのサポートに集中するので、 +それらに対する助けは早く得られます。 =item * @@ -227,10 +225,9 @@ =end original -Versions prior to perl5.004 had serious security problems with buffer -overflows, and in some cases have CERT advisories (for instance, -http://www.cert.org/advisories/CA-1997-17.html ). -(TBT) +perl5.004 以前のバージョンにはバッファオーバーフローによる重大な +セキュリティ問題があり、その一部には CERT アドバイザリ (例えば、 +http://www.cert.org/advisories/CA-1997-17.html) があります。 =item * @@ -242,10 +239,9 @@ =end original -The latest versions are probably the least deployed and widely tested, so -you may want to wait a few months after their release and see what -problems others have if you are risk averse. -(TBT) +最新版はあまり使われていなくて十分にテストされていないので、 +もしリスクを嫌うならリリース後数ヶ月待って他の人がどんな問題を +抱えたかを確認したいかもしれません。 =item * @@ -271,9 +267,7 @@ だれも積極的に Perl 4 をサポートしていません。 5 年前、(この文書によれば)ラクダの死体となりました。 -Now it's barely a skeleton -as its whitewashed bones have fractured or eroded. -(TBT) +今となっては白骨化しています。 =item * @@ -285,10 +279,11 @@ =end original -There is no Perl 6 release scheduled, but it will be available when -it's ready. Stay tuned, but don't worry that you'll have to change -major versions of Perl; no one is going to take Perl 5 away from you. -(TBT) +Perl 6 のリリースの予定は決まっていませんが、準備ができた時点で +利用可能になります。 +注目していてください; 但し、Perl のメジャーバージョンを +変更しなければならないのではないかという心配は不要です; +誰も Perl 5 をあなたから取り上げようとはしません。 =item * @@ -303,13 +298,11 @@ =end original -There are really two tracks of perl development: a maintenance version -and an experimental version. The maintenance versions are stable, and -have an even number as the minor release (i.e. perl5.10.x, where 10 is the -minor release). The experimental versions may include features that -don't make it into the stable versions, and have an odd number as the -minor release (i.e. perl5.9.x, where 9 is the minor release). -(TBT) +実際の perl の開発は 2 つの路線があります: メンテナンス版と実験版です。 +メンテナンス版は安定していて、マイナーリリース番号に偶数を使います +(例えば、perl5.10.0; 10 がマイナーリリース番号です)。 +実験版は安定版に含まれていない機能が含まれていて、マイナーリリース番号に +奇数を使います(例えば、perl5.9.x; 9 がマイナーリリース番号です)。 =back @@ -343,11 +336,10 @@ =end original -The number after perl (i.e. the 5 after Perl 5) is the major release -of the perl interpreter as well as the version of the language. Each -major version has significant differences that earlier versions cannot -support. -(TBT) +"perl" の後ろの数字(例えば "Perl 5" の 5)は perl インタプリタの +メジャーリリース番号であり、言語のバージョンでもあります。 +メジャーバージョン毎に、以前のバージョンでは対応できない +大きな違いがあります。 =begin original @@ -359,12 +351,11 @@ =end original -The current major release of Perl is Perl 5, and was released in 1994. -It can run scripts from the previous major release, Perl 4 (March 1991), -but has significant differences. It introduced the concept of references, -complex data structures, and modules. The Perl 5 interpreter was a -complete re-write of the previous perl sources. -(TBT) +現在の Perl のメジャーリリースは Perl 5 あり、1994 年にリリースされました。 +以前のメジャーリリースである Perl 4 (1991 年 3 月リリース) のスクリプトも +動きますが、重大な違いがあります。 +リファレンスの概念、複雑なデータ構造、モジュールが導入されました。 +Perl 5 インタプリタは以前の perl のソースから完全に書き直されました。 =begin original @@ -377,13 +368,13 @@ =end original -Perl 6 is the next major version of Perl, but it's still in development -in both its syntax and design. The work started in 2002 and is still -ongoing. Many of the most interesting features have shown up in the -latest versions of Perl 5, and some Perl 5 modules allow you to use some -Perl 6 syntax in your programs. You can learn more about Perl 6 at -http://dev.perl.org/perl6/ . -(TBT) +Perl 6 は Perl の次のメジャーバージョンですが、文法と設計の両面において +未だに開発中です。 +作業は 2002 年に開始しましたが、未だに進行中です。 +もっとも興味深い機能の多くは最新版の Perl 5 に現れていて、Perl 5 +モジュールの中にはプログラム中にいくつかの Perl 6 の文法を使えるように +するものもあります。 +http://dev.perl.org/perl6/ で、さらに Perl 6 について学べます。 =begin original @@ -906,8 +897,9 @@ =end original -JAPH stands for "Just another Perl hacker,", which Randal Schwartz used -to sign email and usenet messages starting in the late 1980s. He +JAPH は "Just another Perl hacker," を意味し、Randal Schwartz 1980 年代 +後半から電子メールと USENET のメッセージへのサインとして使い始めました。 +He previously used the phrase with many subjects ("Just another x hacker,"), so to distinguish his JAPH, he started to write them as Perl programs: (TBT) @@ -921,9 +913,8 @@ =end original -Note the trailing comma and space, which allows the addition of other -JAxH clauses for his many other interests. -(TBT) +末尾のカンマと空白に注意してください; これによって彼の多くのその他の興味に +関する JAxH 節を追加できるようになります。 =begin original @@ -978,9 +969,8 @@ =end original -Wikiquote has the witticisms from Larry along with their source, -including his usenet postings and source code comments. -(TBT) +Wikiquote には、Larry による usenet への投稿やソースコードのコメントにある +名言があります。 =begin original @@ -1013,11 +1003,12 @@ =end original -Appeal to their self interest! If Perl is new (and thus scary) to them, -find something that Perl can do to solve one of their problems. That -might mean that Perl either saves them something (time, headaches, money) -or gives them something (flexibility, power, testability). -(TBT) +彼ら自身の関心に訴えてください! +もし彼らにとって Perl が新しい(従って恐ろしい) ものなら、 +Perl が彼らの問題のひとつを解決できるようなことを何かひとつ +見つけてください。 +これによって、Perl が何か(時間、悩み、時間)を節約するか、 +何か(柔軟性、力、テスト可能性)を与えることを意味するかもしれません。 =begin original @@ -1030,8 +1021,9 @@ =end original -In general, the benefit of a language is closely related to the skill of -the people using that language. If you or your team can be more faster, +一般的に、ある言語の利点は、その言語を使う人々のスキルに大きな関係が +あります。 +If you or your team can be more faster, better, and stronger through Perl, you'll deliver more value. Remember, people often respond better to what they get out of it. If you run into resistance, figure out what those people get out of the other @@ -1048,12 +1040,11 @@ =end original -You don't have to worry about finding or paying for Perl; it's freely -available and several popular operating systems come with Perl. Community -support in places such as Perlmonks ( http://www.perlmonks.com ) -and the various Perl mailing lists ( http://lists.perl.org ) means that -you can usually get quick answers to your problems. -(TBT) +Perl を探したり買ったりする心配する必要はありません; Perl はフリーで +利用でき、いくつかの有名なオペレーティングシステムは Perl を同梱しています。 +Perlmonks ( http://www.perlmonks.com ) のようにあちこちにあるコミュニティ +サポートと、様々な Perl メーリングリスト ( http://lists.perl.org ) によって、 +たいていはあなたの問題に対する素早い回答を得られます。 =begin original @@ -1065,12 +1056,14 @@ =end original -Finally, keep in mind that Perl might not be the right tool for every -job. You're a much better advocate if your claims are reasonable and -grounded in reality. Dogmatically advocating anything tends to make -people discount your message. Be honest about possible disadvantages -to your choice of Perl since any choice has trade-offs. -(TBT) +最後に、Perl が全ての作業に対して正しいツールとは限らないことを心に +留めておいてください。 +あなたの主張が妥当で、現実に基いたものであれば、あなたは遥かによい +提唱者となります。 +なんであれ独善的な主張を行うと、人々はあなたの主張を割り引いて扱う +傾向があります。 +全ての選択にはトレードオフがありますので、Perl という選択に対して +あり得る弱点について素直になりましょう。 =begin original Index: docs/perl/5.10.0/perlfaq2.pod diff -u docs/perl/5.10.0/perlfaq2.pod:1.1 docs/perl/5.10.0/perlfaq2.pod:1.2 --- docs/perl/5.10.0/perlfaq2.pod:1.1 Fri Apr 18 21:04:24 2008 +++ docs/perl/5.10.0/perlfaq2.pod Thu May 22 05:32:28 2008 @@ -105,9 +105,8 @@ =end original -Sunfreeware.com provides binaries for many utilities, including -Perl, for Solaris on both Intel and SPARC hardware: -(TBT) +Sunfreeware.com は Intel と SPARC の両方の Solaris 向けに、 +Perl を含む多くのユーティリティのバイナリを提供しています: http://www.sunfreeware.com/ @@ -186,9 +185,8 @@ =end original -You might look around the net for a pre-built binary of Perl (or a -C compiler!) that meets your needs, though: -(TBT) +ニーズを満たすような Perl (または C コンパイラ!) のビルド済みバイナリを +ネットで探す必要があるかもしれませんが: =begin original Index: docs/perl/5.10.0/perlfaq3.pod diff -u docs/perl/5.10.0/perlfaq3.pod:1.1 docs/perl/5.10.0/perlfaq3.pod:1.2 --- docs/perl/5.10.0/perlfaq3.pod:1.1 Sun Apr 20 05:09:58 2008 +++ docs/perl/5.10.0/perlfaq3.pod Thu May 22 05:32:28 2008 @@ -1754,9 +1754,8 @@ =end original -In general, memory allocation and de-allocation isn't something you can -or should be worrying about much in Perl. -(TBT) +一般的に、メモリの確保と解放の問題は Perl においてはあまり気にする必要がある +問題ではありません。 =begin original Index: docs/perl/5.10.0/perlfaq4.pod diff -u docs/perl/5.10.0/perlfaq4.pod:1.2 docs/perl/5.10.0/perlfaq4.pod:1.3 --- docs/perl/5.10.0/perlfaq4.pod:1.2 Fri Apr 18 21:04:24 2008 +++ docs/perl/5.10.0/perlfaq4.pod Thu May 22 05:32:28 2008 @@ -42,9 +42,10 @@ 内部的には、あなたの使っているコンピュータは浮動小数点数を 2 進数を 使って表現しています。 Digital (as in powers of two) computers cannot store all numbers -exactly. Some real numbers lose precision in the process. This is a -problem with how computers store numbers and affects all computer -languages, not just Perl. +exactly. +実数は処理中に精度が落ちることがあります。 +これはコンピュータがどのように数値を保管するかの問題で、Perl だけではなく +全てのコンピュータ言語に影響を与えます。 (TBT) =begin original @@ -117,11 +118,9 @@ =end original ほとんどのコンピュータでは 1 ではなく 0 を表示します; -because even such simple -numbers as 0.6 and 0.2 cannot be presented exactly by floating-point -numbers. What you think in the above as 'three' is really more like -2.9999999999999995559. -(TBT) +0.6 や 0.2 と言った単純な数値であっても、浮動小数点数で正確に表現できません。 +さきほどあなたが "3" と考えたものは、実際には 2.9999999999999995559 と +いったものです。 =head2 Why isn't my octal data interpreted correctly? @@ -180,10 +179,9 @@ =end original -Note the mistake in the first line was specifying the decimal literal -C<644>, rather than the intended octal literal C<0644>. The problem can -be seen with: -(TBT) +1 行目の間違いは、意図している 8 進数リテラル C<0644> ではなく、 +10 進数 リテラル C<644> を指定していることであることに注意してください。 +問題点は、以下のようにすることで見られます: printf("%#o",644); # prints 01204 @@ -196,8 +194,9 @@ =end original -Surely you had not intended C<chmod(01204, $file);> - did you? If you -want to use numeric literals as arguments to chmod() et al. then please +Surely C<chmod(01204, $file);> を意図してないはずです - ですよね? +chmod() などでの引数として数値リテラルを使いたい場合は、 +then please try to express them as octal constants, that is with a leading zero and with the following digits restricted to the set C<0..7>. (TBT) @@ -329,8 +328,8 @@ =end original -Some of the examples later in L<perlfaq4> use the C<Bit::Vector> -module from CPAN. The reason you might choose C<Bit::Vector> over the +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. @@ -851,7 +850,7 @@ =head2 How do I get a random number between X and Y? -(X と Y の間のランダムな数を得るには?) +(X と Y の間の乱数を得るには?) =begin original @@ -861,10 +860,9 @@ =end original -To get a random number between two values, you can use the C<rand()> -builtin to get a random number between 0 and 1. From there, you shift -that into the range that you want. -(TBT) +二つの値の間の乱数を得るためには、まず 0 と 1 との間の乱数を得るために +C<rand()> 組み込み関数を使います。 +それから、これを必要な範囲にシフトします。 =begin original @@ -874,7 +872,8 @@ =end original -C<rand($x)> returns a number such that C<< 0 <= rand($x) < $x >>. Thus +C<rand($x)> は C<< 0 <= rand($x) < $x >> という値を返します。 +Thus what you want to have perl figure out is a random number in the range from 0 to the difference between your I<X> and I<Y>. (TBT) @@ -886,9 +885,8 @@ =end original -That is, to get a number between 10 and 15, inclusive, you want a -random number between 0 and 5 that you can then add to 10. -(TBT) +つまり、10 から 15 の範囲の値(両端を含む) を得るためには、 +0 から 5 の範囲の乱数を求めて、それに 10 を加えます。 my $number = 10 + int rand( 15-10+1 ); @@ -953,10 +951,8 @@ =end original -任意の日付に対してその年の何日目かを得るには、 -use C<POSIX>'s C<mktime> to get -a time in epoch seconds for the argument to localtime. -(TBT) +任意の日付に対してその年の何日目かを得るには、localtime の引数から +紀元からの秒数を求めるために、C<POSIX> の C<mktime> を使います。 use POSIX qw/mktime strftime/; my $week_of_year = strftime "%W", @@ -1034,11 +1030,11 @@ =end original -You could just store all your dates as a number and then subtract. -Life isn't always that simple though. If you want to work with -formatted dates, the C<Date::Manip>, C<Date::Calc>, or C<DateTime> -modules can help you. -(TBT) +日付を単に数値として保管して、それから引き算することもできます。 +しかし、人生はいつもこんな風に単純とは限りません。 +フォーマットされた日付に対して作業したい場合は、 +C<Date::Manip>, C<Date::Calc>, C<DateTime> といったモジュールが +助けになるかもしれません。 =head2 How can I take a string and turn it into epoch seconds? @@ -1079,11 +1075,10 @@ =end original -You can use the C<Time::JulianDay> module available on CPAN. Ensure -that you really want to find a Julian day, though, as many people have -different ideas about Julian days. See -http://www.hermetic.ch/cal_stud/jdn.htm for instance. -(TBT) +CPAN にある C<Time::JulianDay> モジュールが使えます。 +しかし、本当にユリウス日がほしいのか確認してください; +多くの人々がユリウス日に関して異なる考え方を持っています。 +例としては、http://www.hermetic.ch/cal_stud/jdn.htm を参照してください。 =begin original @@ -1379,7 +1374,8 @@ =end original -We can also use the transliteration operator, C<tr///>. In this +文字変換演算子 C<tr///> を使うこともできます。 +In this example, the search list side of our C<tr///> contains nothing, but the C<c> option complements that so it contains everything. The replacement list also contains nothing, so the transliteration is @@ -1414,11 +1410,12 @@ =end original -This is documented in L<perlref>, and although it's not the easiest -thing to read, it does work. In each of these examples, we call the -function inside the braces used to dereference a reference. If we -have more than one return value, we can construct and dereference an -anonymous array. In this case, we call the function in list context. +これは L<perlref> に文書化されていて、もっとも読みやすいものでは +ありませんが、動きます。 +In each of these examples, we call the +function inside the braces used to dereference a reference. +もし複数の返り値がある場合、無名配列を構築して、デリファレンスします。 +この場合、関数をリストコンテキストで呼び出します。 (TBT) print "The time values are @{ [localtime] }.\n"; @@ -1469,7 +1466,7 @@ =end original -The C<Interpolation> module can also do a lot of magic for you. You can +C<Interpolation> module can also do a lot of magic for you. 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. @@ -1516,8 +1513,8 @@ しかし、ネストしたパターンを扱うようなものはありませんし、できません。 For balanced expressions using C<(>, C<{>, C<[> or C<< < >> as delimiters, use the CPAN module Regexp::Common, or see -L<perlre/(??{ code })>. For other cases, you'll have to write a -parser. +L<perlre/(??{ code })>. +その他の場合では、パーサーを書く必要があります。 (TBT) =begin original @@ -1818,9 +1815,8 @@ =end original -Another version uses a global match in list context, then assigns the -result to a scalar, producing a count of the number of matches. -(TBT) +もう一つのバージョンでは、リストコンテキストでグローバルマッチングを +使って、その結果をスカラに代入することで、マッチングした数を数えます。 $count = () = $string =~ /-\d+/g; @@ -2030,6 +2026,7 @@ =end original +置換を使うことで行えます。 A substitution can do this for you. For a single line, you want to replace all the leading or trailing whitespace with nothing. You can do that with a pair of substitutions. @@ -2231,9 +2228,8 @@ =end original -If you know where the columns that contain the data, you can -use C<substr> to extract a single column. -(TBT) +データが含まれている桁が分かっているなら、単一の桁を展開するために +C<substr> が使えます。 my $column = substr( $line, $start_column, $length ); @@ -2267,11 +2263,10 @@ =end original -If you want to work with comma-separated values, don't do this since -that format is a bit more complicated. Use one of the modules that -handle that fornat, such as C<Text::CSV>, C<Text::CSV_XS>, or -C<Text::CSV_PP>. -(TBT) +カンマ区切りの値(CSV)を扱いたい場合は、フォーマットが少し複雑なので +これはしないで下さい。 +C<Text::CSV>, C<Text::CSV_XS>, C<Text::CSV_PP> のような、この +フォーマットを扱うためのモジュールの一つを使ってください。 =begin original @@ -2282,11 +2277,11 @@ =end original -If you want to break apart an entire line of fixed columns, you can use -C<unpack> with the A (ASCII) format. by using a number after the format -specifier, you can denote the column width. See the C<pack> and C<unpack> -entries in L<perlfunc> for more details. -(TBT) +固定桁の行全体を分解したいなら、C<unpack> の A (ASCII) フォーマットが +使えます。 +フォーマット指定子の後に数値をつけることで、桁数を指定できます。 +更なる詳細については L<perlfunc> の C<pack> と C<unpack> の項目を +参照してください。 my @fields = unpack( $line, "A8 A8 A8 A16 A4" ); @@ -2322,7 +2317,8 @@ =end original -You can use the Text::Soundex module. If you want to do fuzzy or close +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) @@ -2347,10 +2343,10 @@ =end original -If you can avoid it, don't, or if you can use a templating system, -such as C<Text::Template> or C<Template> Toolkit, do that instead. You -might even be able to get the job done with C<sprintf> or C<printf>: -(TBT) +もし避けることが可能なら、してはいけません; +あるいは、C<Text::Template> や C<Template> ツールキットのような +テンプレートシステムが使えるなら、これらを代わりに使ってください。 +C<sprintf> や C<printf> を使って作業をこなすことすらできます: my $string = sprintf 'Say hello to %s and %s', $foo, $bar; @@ -2797,9 +2793,9 @@ =end original -Use a hash. When you think the words "unique" or "duplicated", think -"hash keys". -(TBT) +ハッシュを使ってください。 +「ユニーク」や「重複」といった単語を考えたときには、 +「ハッシュキー」を考えてください。 =begin original @@ -2810,11 +2806,9 @@ =end original -If you don't care about the order of the elements, you could just -create the hash then extract the keys. It's not important how you -create that hash: just that you use C<keys> to get the unique -elements. -(TBT) +要素の順番を気にしないなら、単にハッシュを作ってキーを取り出してください。 +どのようにハッシュを作るかは重要ではありません: +単にユニークな要素を取り出すために C<keys> を使うためです。 my %hash = map { $_, 1 } @array; # or a hash slice: @hash{ @array } = (); @@ -2831,11 +2825,10 @@ =end original -If you want to use a module, try the C<uniq> function from -C<List::MoreUtils>. In list context it returns the unique elements, -preserving their order in the list. In scalar context, it returns the -number of unique elements. -(TBT) +モジュールを使いたいなら、C<List::MoreUtils> の C<uniq> 関数を +試してみてください。 +リストコンテキストでは、リストの順序を保存した形でユニークな要素を返します。 +スカラコンテキストでは、ユニークな要素の数を返します。 use List::MoreUtils qw(uniq); @@ -3010,11 +3003,11 @@ =end original -If you are testing only once, the standard module C<List::Util> exports -the function C<first> for this purpose. It works by stopping once it -finds the element. It's written in C for speed, and its Perl equivalent -looks like this subroutine: -(TBT) +一度だけテストする場合、標準モジュール C<List::Util> がこの目的のために +C<first> 関数をエクスポートしています。 +これは要素を見つけると停止することで動作します。 +速度のために C で書かれていて、これの Perl の等価な処理は、次のサブルーチンの +ようになります: sub first (&@) { my $code = shift; @@ -3048,9 +3041,8 @@ =end original -If you want to actually extract the matching elements, simply use grep in -list context. -(TBT) +実際にマッチングした要素を展開したい場合は、単にリストコンテキストで +grep を使ってください。 my @matches = grep $_ eq $whatever, @array; @@ -3185,8 +3177,8 @@ To find the first array element which satisfies a condition, you can use the C<first()> function in the C<List::Util> module, which comes -with Perl 5.8. This example finds the first element that contains -"Perl". +with Perl 5.8. +この例は "Perl" を含む最初の要素を探します。 (TBT) use List::Util qw(first); @@ -3200,9 +3192,8 @@ =end original -If you cannot use C<List::Util>, you can make your own loop to do the -same thing. Once you find the element, you stop the loop with last. -(TBT) +C<List::Util> が使えない場合は、同じことをするために自分でループを書きます。 +要素が見つかったら、last を使ってループを停止します。 my $found; foreach ( @array ) { @@ -3217,10 +3208,9 @@ =end original -If you want the array index, you can iterate through the indices -and check the array element at each index until you find one -that satisfies the condition. -(TBT) +配列の添え字がほしい場合は、添え字に順番に変えていって、 +それぞれの添え字の配列要素をチェックして、条件を満たすものが +見つかるまで繰り返します。 my( $found, $index ) = ( undef, -1 ); for( $i = 0; $i < @array; $i++ ) { @@ -3513,11 +3503,9 @@ =end original -Prior to perl 5.6 C<values> returned copies of the values, -so older perl code often contains constructions such as -C<@orbits{keys %orbits}> instead of C<values %orbits> where -the hash is to be modified. -(TBT) +perl 5.6 以前では、C<values> は値のコピーを返すので、古い perl の +コードでは、ハッシュを修正しているところで C<values %orbits> ではなく +C<@orbits{keys %orbits}> と書いていることがよくあります。 =head2 How do I select a random element from an array? @@ -3852,9 +3840,8 @@ =end original -You can make the while loop a lot shorter with this suggestion -from Benjamin Goldberg: -(TBT) +Benjamin Goldberg の提案を使って、while ループをはるかに +短くすることもできます: while($vec =~ /[^\0]+/g ) { push @ints, grep vec($vec, $_, 1), $-[0] * 8 .. $+[0] * 8; @@ -3879,9 +3866,8 @@ =end original -C<Bit::Vector> provides efficient methods for bit vector, sets of -small integers and "big int" math. -(TBT) +C<Bit::Vector> は、ビットベクタ、小さい整数の就業、「大きな整数」の +計算に関する効果的なメソッドを提供します。 =begin original @@ -3985,9 +3971,9 @@ =end original -To go through all of the keys, use the C<keys> function. This extracts -all of the keys of the hash and gives them back to you as a list. You -can then get the value through the particular key you're processing: +To go through all of the keys, use the C<keys> function. +ハッシュの全てのキーを展開してリストの形で返します。 +それから処理したい特定のキーの値を取得します。 (TBT) foreach my $key ( keys %hash ) { @@ -4003,10 +3989,8 @@ =end original -Once you have the list of keys, you can process that list before you -process the hashh elements. For instance, you can sort the keys so you -can process them in lexical order: -(TBT) +キーのリストを取得したら、ハッシュ要素を処理する前にリストを処理できます。 +例えば、キーをソートしてレキシカルな順序で処理できます: foreach my $key ( sort keys %hash ) { my $value = $hash{$key} @@ -4039,8 +4023,9 @@ =end original -If the hash is very large, you might not want to create a long list of -keys. To save some memory, you can grab on key-value pair at a time using +ハッシュがとても大きい場合、キーの長いリストを作りたくないかもしれません。 +メモリを節約するために、 +you can grab on key-value pair at a time using C<each()>, which returns a pair you haven't seen yet: (TBT) @@ -4076,8 +4061,8 @@ skipping or re-processing some pairs after Perl internally rehashes all of the elements. Additionally, a hash has only one iterator, so if you use C<keys>, C<values>, or C<each> on the same hash, you can reset -the iterator and mess up your processing. See the C<each> entry in -L<perlfunc> for more details. +the iterator and mess up your processing. +さらなる詳細については L<perlfunc> の C<each> エントリを参照してください。 (TBT) =head2 What happens if I add or remove keys from a hash while iterating over it? @@ -4114,9 +4099,8 @@ If you iterate through the hash with each(), you can delete the key most recently returned without worrying about it. If you delete or add other keys, the iterator may skip or double up on them since perl -may rearrange the hash table. See the -entry for C<each()> in L<perlfunc>. -(TBT) +may rearrange the hash table. +L<perlfunc> の C<each()> のエントリを参照してください。 =head2 How do I look up a hash element by value? @@ -4216,7 +4200,8 @@ =end original -To sort a hash, start with the keys. In this example, we give the list of +ハッシュをソートするために、キーから始めます。 +In this example, 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 @@ -4295,9 +4280,8 @@ =end original -From there we can get more complex. If the hash values are the same, -we can provide a secondary sort on the hash key. -(TBT) +ここから、より複雑なものにできます。 +ハッシュ値が同じ場合は、ハッシュキーによる第二段階のソートを提供できます。 my @keys = sort { $hash{$a} <=> $hash{$b} @@ -4324,10 +4308,9 @@ L<DB_File/"In Memory Databases"> にあるように、C<DB_File> モジュールと C<tie()> を使った、$DB_BTREE ハッシュ束縛を使うことができます。 CPAN の C<Tie::IxHash> モジュールも有益かもしれません。 -Although this does keep your hash sorted, you might not -like the slow down you suffer from the tie interface. Are you sure you -need to do this? :) -(TBT) +これによりハッシュはソートされた状態のままになりますが、tie +インターフェースによって被る速度低下を気に入らないかもしれません。 +あなたは本当にこれが必要ですか? :) =head2 What's the difference between "delete" and "undef" with hashes? @@ -4746,7 +4729,8 @@ 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 +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) @@ -4758,9 +4742,9 @@ =end original -The C<Tie::RefHash> module, which is distributed with perl, might be -what you want. It handles that extra work. -(TBT) +perl と共に配布されている C<Tie::RefHash> モジュールが、あなたの求めている +ものかもしれません。 +これは追加の作業を扱います。 =head1 Data: Misc @@ -4818,7 +4802,7 @@ =end original -“NaN”とか“Infinity”のようなIEEE 表記については気にしないと仮定すると、 +"NaN" や "Infinity" のような IEEE 表記については気にしないと仮定すると、 正規表現を使って行うことができます。 if (/\D/) { print "has nondigits\n" } @@ -4849,8 +4833,8 @@ variable looks like a number. L<Data::Types> exports functions that validate data types using both the above and other regular expressions. Thirdly, there is C<Regexp::Common> which has regular -expressions to match various types of numbers. Those three modules are -available from the CPAN. +expressions to match various types of numbers. +これら 3 つのモジュールは CPAN にあります。 (TBT) =begin original Index: docs/perl/5.10.0/perlfaq9.pod diff -u docs/perl/5.10.0/perlfaq9.pod:1.1 docs/perl/5.10.0/perlfaq9.pod:1.2 --- docs/perl/5.10.0/perlfaq9.pod:1.1 Fri Apr 18 02:35:43 2008 +++ docs/perl/5.10.0/perlfaq9.pod Thu May 22 05:32:28 2008 @@ -546,8 +546,8 @@ =end original If you are doing something complex, such as moving through many pages -and forms or a web site, you can use C<WWW::Mechanize>. See its -documentation for all the details. +and forms or a web site, you can use C<WWW::Mechanize>. +全ての詳細についてはこれのドキュメントを参照してください。 (TBT) =begin original @@ -664,8 +664,8 @@ server). This is one of the two different kinds of CGI "Location:" responses which are defined in the CGI specification for a Parsed Headers script. The other kind (an absolute URLpath) is resolved internally to -the server without any HTTP redirection. The CGI specifications do not -allow relative URLs in either case. +the server without any HTTP redirection. +CGI 仕様ではどちらの場合でも相対 URL は認められていません。 (TBT) =begin original @@ -727,11 +727,13 @@ =end original -To enable authentication for your web server, you need to configure -your web server. The configuration is different for different sorts +利用する Web サーバーで認証を有効にするには、Web サーバーを設定することが +必要です。 +The configuration is different for different sorts of web servers--apache does it differently from iPlanet which does -it differently from IIS. Check your web server documentation for -the details for your particular server. +it differently from IIS. +特定のサーバーに関する詳細については、そのサーバーのドキュメントを +チェックしてください。 (TBT) =head2 How do I edit my .htpasswd and .htgroup files with Perl? @@ -772,8 +774,7 @@ =end original -See the security references listed in the CGI Meta FAQ -(TBT) +CGI Meta FAQ に挙げられているセキュリティに関する参考資料を参照してください。 http://www.perl.org/CGI_MetaFAQ.html @@ -994,10 +995,11 @@ =end original Just match an address against C</^${addr_spec}$/> to see if it follows -the RFC2822 specification. However, because it is impossible to be -sure that such a correctly formed address is actually the correct way -to reach a particular person or even has a mailbox associated with it, -you must be very careful about how you use this. +the RFC2822 specification. +しかし、このような正しい形式のアドレスが実際に特定の個人に届く +正しい方法なのか、あるいはその個人に関連付けられたメールボックスに +届くのかさえも明確にすることは不可能なので、これをどう使うかについては +とても慎重になる必要があります。 (TBT) =begin original