Skip to content

Latest commit

 

History

History
3394 lines (1715 loc) · 58.4 KB

perlfaq.pod

File metadata and controls

3394 lines (1715 loc) · 58.4 KB

NAME

perlfaq - Perl に関するよくある質問

VERSION

version 5.021010

DESCRIPTION

perlfaq は、Perl と Perl プログラミングに関するもっともよくある質問へ 回答しているいくつかの文書から構成されています。 これはこの文書に概説されている、9 個の大きな区分に分割されています。

Where to find the perlfaq

(perlfaq を探す場所)

perlfaq は 進化している文書です。 http://learn.perl.org/faq/ で最新版を読んでください。 また標準 Perl 配布にも含まれています。

How to use the perlfaq

(perlfaq の使い方)

perldoc コマンドラインツールは標準 Perl 配布の一部です。 perlfaq を読むには:

$ perldoc perlfaq

perlfaq の質問の見出しを検索するには:

$ perldoc -q open

How to contribute to the perlfaq

(perlfaq への貢献方法)

https://github.com/perl-doc-cats/perlfaq/wiki を見てください。 あなたの提案がそこになければ https://github.com/perl-doc-cats/perlfaq に issue を作るか pull request を送ってください。

承認されれば、変更点は http://learn.perl.org/faq/ を管理する https://github.com/tpf/perlfaq にマージされ、次の Perl 5 リリースで 配布されます。

What if my question isn't answered in the FAQ?

(私の質問の答えが FAQ にないときは?)

perlfaq2 のリソースを試してください。

TABLE OF CONTENTS

perlfaq1 - General Questions About Perl

(perlfaq1 - Perl に関する一般的な質問)

perlfaq2 - Obtaining and Learning about Perl

(perlfaq2 - Perl の入手と学習)

perlfaq3 - Programming Tools

(perlfaq3 - プログラミングツール)

perlfaq4 - Data Manipulation

(perlfaq4 - データ操作)

perlfaq5 - Files and Formats

(perlfaq5 - ファイルとフォーマット)

perlfaq6 - Regular Expressions

(perlfaq6 - 正規表現)

perlfaq7 - General Perl Language Issues

(perlfaq7 - Perl 言語一般に関することがら)

perlfaq8 - System Interaction

(perlfaq8 - システムとの相互作用)

perlfaq9 - Web, Email and Networking

(perlfaq9 - Web、メール、ネットワーク)

THE QUESTIONS

perlfaq1: General Questions About Perl

(perlfaq1: Perl に関する一般的な質問)

このセクションでは、Perl に関する非常に一般的で高レベルの質問に答えます。

  • Perlってなんですか?

  • だれが Perl をサポートしているのですか? 誰が開発しているのですか? なぜフリーなのでしょうか?

  • どのバージョンの Perl を使うべきなのでしょうか?

  • Perl 4, Perl 5, Perl 6 って何ですか?

  • Perl 6 ってなんですか?

  • Perl はどのくらい安定しているのでしょうか?

  • どのくらいのペースで新しいバージョンの Perl はリリースされますか?

  • Perl は学ぶのが難しいのでしょうか?

  • Java, Python, REXX, Scheme, Tcl といった他の言語と比べて Perl はどうなんでしょうか?

  • Perlで○○を行えますか?

  • Perl でプログラムするべきではないのはどういう場合ですか?

  • “perl”と“Perl”の違いはなんですか?

  • JAPH ってなんですか?

  • 他の人に、どうすれば Perl を使うように説得できるでしょうか?

perlfaq2: Obtaining and Learning about Perl

(perlfaq2: Perl の入手と学習)

FAQ のこのセクションでは、Perl のソースや Perl に関するドキュメントが 手に入れられる場所に関する質問や、サポートとトレーニング、関連した 出来事に関する質問に回答しています。

  • perl はどんなマシンで動きますか? どこで入手できますか?

  • バイナリ形式の perl はどうすれば入手できますか?

  • 私は C コンパイラーを持っていません。どうすれば自分用の Perl インタプリタをビルドできますか?

  • perl のバイナリをあるマシンから別のマシンにコピーしたのだけど、スクリプトが動きませんでした

  • ソースを取ってきてコンパイルしようとしたのだけど、gdbm/dynamic loading/malloc/linking/... failed. となってしまった。動くようにするにはどうすればいいの?

  • Perl に使えるモジュールとかエクステンションってなんですか? CPAN ってなに?

  • Perl に関する情報はどこで手に入れられますか?

  • perl.com, Perl Mongers, pm.org, perl.org, cpan.org ってなんですか?

  • どこに質問を投稿できますか?

  • Perl の書籍

  • Perl 関連の雑誌は?

  • 読むべき Perl ブログは?

  • Perlのためのメイリングリストって?

  • どこで商用版 Perl を買うことができますか?

  • バグレポートはどこへ送るの?

perlfaq3: Programming Tools

(perlfaq3: プログラミングツール)

FAQ のこのセクションでは、プログラマーツールやプログラミングサポートに 関する質問に回答しています。

  • ○○をするにはどうすればいいの?

  • 対話的に Perl を使うには?

  • 自分のシステムに入っているモジュールを知るには?

  • 私の Perl プログラムをデバッグするには?

  • 私の Perl プログラムのプロファイルを取るには?

  • 私の Perl プログラムのクロスリファレンスをとるには?

  • Perl 用のプリティプリンター(フォーマッター)はありますか?

  • Perl の統合開発環境とか Windows Perl Editor はありますか?

  • vi 用の Perl マクロはどこで入手できますか?

  • emacs の perl-mode や cperl-mode はどこで入手できますか?

  • Perl で curses を使うには?

  • Perl で GUI (X, Tk, Gtk など) を書くには?

  • 私の Perl プログラムをもっと速くするには?

  • 私の Perl プログラムのメモリ消費量を少なくするには?

  • ローカルやレキシカルなデータへのポインターを返すことは安全ですか?

  • 配列やハッシュを解放して私のプログラムを小さくするには?

  • 私の CGI スクリプトをもっと効率よくするには?

  • 私の Perl プログラムのソースを隠すには?

  • 私の Perl プログラムをバイトコードや C へコンパイルするには?

  • MS-DOS, NT, etc で '#!perl' が動作するようにするには?

  • コマンドライン上で便利な Perl プログラムを書けますか?

  • なぜ私の DOS/Mac/VMS システムでは一行野郎は動かないのでしょうか?

  • Perl による CGI や Web プログラミングについてどこで学べますか?

  • オブジェクト指向の Perl プログラミングはどこで学べますか?

  • C と Perl のリンクについてはどこで学べますか?

  • perlembed や perlguts なんかを読んだのだけど、私の C プログラムに perl を組み込めません。何が悪いのでしょうか?

  • 私のスクリプトを実行したとき、こんなメッセージを受け取りました。これって何を意味しているのでしょうか?

  • MakeMaker ってなんですか?

perlfaq4: Data Manipulation

(perlfaq4: データ操作)

FAQ のこのセクションでは、数値、日付、文字列、配列、ハッシュその他の データの取り扱いに関する質問に回答しています。

  • なぜ 19.95 のような数字ではなく、19.9499999999999 のような長い数字が出てきたんでしょうか?

  • なぜ int() は壊れているのでしょう?

  • なぜ私の 8 進データは正しく解釈されないのでしょうか?

  • Perl には丸め関数がありますか? ceil() と floor() とは何ですか? 三角関数は?

  • 数値表現や基底や基数を変換するには?

  • なぜ & は私の思った通りに動作しないのでしょうか?

  • 行列の積を計算するには?

  • 整数値の並びに対してある操作を実行するには?

  • ローマ数字を出力するには?

  • なぜ私の乱数はランダムでないの?

  • X と Y の間の乱数を得るには?

  • その年の何日目であるかを知るには?

  • 現在の世紀や千年紀を知るには?

  • 二つの日付文字列を比較するには?

  • 文字列を受け取って、それを紀元からの経過秒数に変換するには?

  • ユリウス日を求めるには?

  • 昨日の日付を得るには?

  • Perl には 2000 年問題や 2038 年問題があるのですか? Perl は 2000 年対応ですか?

  • 入力を検査するには?

  • 文字列のアンエスケープ (unescape)をするには?

  • キャラクタの連続した組を取り除くには?

  • 文字列中にある関数呼び出しを展開するには?

  • 何かがマッチしている/ネストしているということを検出するには?

  • 文字列をひっくり返すには?

  • 文字列中にあるタブを展開するには?

  • 段落を整形するには?

  • 文字列の最初の N 文字にアクセスしたり、それを変更するには?

  • 何かの N 番目のものを変更するには?

  • ある文字列の中に存在する部分文字列が何個あるのかを数えるには?

  • 一行にあるすべての単語をキャピタライズするには?

  • (とある文字)の内側にある時を除き、(とある文字)で終端されている文字列を分割するには?

  • 文字列の先頭や末尾にある空白を剥ぎ取るには?

  • 文字列に空白をパッディングしたり、数値にゼロをパッディングしたりするには?

  • 文字列から選択されたカラムを取り出すには?

  • 文字列の soundex 値を見つけるには?

  • テキスト文字列の中にある変数を展開するには?

  • 常にクォーティング "$vars" することの何が悪いの?

  • なぜ私の <<HERE ドキュメントがうまく動かないのでしょう?

  • リストと配列の差とはなんですか?

  • $array[1] と @array[1] との間の違いはなんですか?

  • 配列やリストにある重複した要素を削除するには?

  • リストや配列の内容にある特定の要素があるかどうかを確かめるには?

  • 二つの配列の差(difference)を求めるには? 二つの配列の共通要素(inter section)を求めるには?

  • 二つの配列や二つのハッシュが等しいかどうかを検査するには?

  • ある条件が真となる最初の配列要素を見つけだすには?

  • リンク付きリストを扱うには?

  • 循環リストを扱うには?

  • 配列をランダムにかき混ぜるには?

  • 配列の各要素に対する処理や、変更を行うには?

  • ある配列からランダムに要素を選択するには?

  • N 要素を持つリストの順列(permute)を求めるには?

  • (なにか)で配列をソートするには?

  • ビット配列を扱うには?

  • なぜ空の配列やハッシュに defined() を使ったときに真が返ってくるのでしょう?

  • ハッシュ全体を処理するには?

  • 二つのハッシュをマージするには?

  • ハッシュに対して反復操作を行っているときにキーの追加や削除をすると何が起きますか?

  • ハッシュの要素をその値で検索するには?

  • ハッシュにどれくらいの要素があるのを知るには?

  • ハッシュを(キーではなく値で)ソートするには?

  • 私のハッシュを常にソートされた状態にしておくには?

  • ハッシュに対する "delete" と "undef"との間の違いは?

  • なぜわたしの tie されたハッシュは defined と exists を区別しないのでしょうか?

  • each() 操作の途中でリセットしてしまうには?

  • 二つのハッシュからユニークなキーを取りだすには?

  • DBM ファイルに多次元配列を格納するには?

  • わたしのハッシュが格納した順番を覚えておくようにするには?

  • なぜあるハッシュの未定義要素をサブルーチンに渡すとそれを作成するのでしょうか?

  • C の構造体/C++ のクラスのハッシュ、配列のハッシュ、配列と等価なものを Perl で作成するには?

  • ハッシュのキーとしてリファレンスを使うには?

  • 複数レベルハッシュにキーがあるかどうかをチェックするには?

  • 望んでいないキーをハッシュに追加されないようにすることができますか?

  • バイナリデータを正しく扱うには?

  • あるスカラ値が数値/整数/浮動小数点数かどうかを決定するには?

  • プログラムの呼び出しの間に、データ構造を永続的に保持するには?

  • 再帰的なデータ構造を出力したりコピーするには?

  • すべてのクラス/オブジェクトのためのメソッドを定義するには?

  • クレジットカードのチェックサムを検査するには?

  • XSプログラムのために倍精度実数や単精度実数の配列を pack するには?

perlfaq5: Files and Formats

(perlfaq5: ファイルとフォーマット)

このセクションでは、入出力と“f”に関する事柄: ファイルハンドル (filehandle)、フラッシング(flushing)、フォーマット(format)、 フッター(footer)を扱います。

  • 出力ファイルハンドルを flush/unbufferするには? なぜ私はこれをやらなければならないの?

  • ファイルの一行を変更する/ファイルのある行を削除する/ファイルの中程で一行挿入する/ファイルの先頭に追加するには?

  • あるファイルの行数を数えるには?

  • ファイルの最後の N 行を削除するには?

  • プログラム内から Perl の -i オプションを使うには?

  • ファイルをコピーするには?

  • 一時ファイルの名前を作り出すには?

  • 固定長レコードのファイルを操作するには?

  • ファイルハンドルをサブルーチンに局所化するには? サブルーチンにファイルハンドルを渡すには? ファイルハンドルの配列を作るには?

  • ファイルハンドルを間接的に扱うには?

  • write()と一緒に使うフッターのフォーマットのセットアップをする方法は?

  • 文字列に対して write() するには?

  • ファイルハンドルを文字列としてオープンするには?

  • 出力する数字にカンマを付加するには?

  • ファイル名の中にあるチルダ (~) を変換するには?

  • ファイルを読み書きモードでオープンしたときに内容をクリアしてしまうのはなぜ?

  • なぜ <*> を使ったときに "Argument list too long" (引数リストが長すぎる)となることがあるの?

  • How can I open a file with a leading ">" or trailing blanks?

  • 信頼性のあるファイルのリネームをするには?

  • ファイルをロックするには?

  • なぜ単に open(FH, ">file.lock")とできないの?

  • まだロックができません。ただ単にファイルにある数値をインクリメントしたいだけなんだけど。どうすればいいの?

  • ファイルの末尾にちょっとしたテキストを追加したいだけなんです。それでもロックが必要なの?

  • バイナリファイルをランダムに更新するには?

  • perl でファイルのタイムスタンプを取得するには?

  • perl でファイルのタイムスタンプを設定するには?

  • 複数のファイルを一度に表示するには?

  • ファイル全体を一度に読みこむには?

  • ファイルをパラグラフ毎に読み込むには?

  • ファイルから 1 文字だけ読み出すには? キーボードからは?

  • あるファイルハンドルが読み込み待ちの文字を待っているかどうかを知るには?

  • perlで tail -f をするには?

  • Perl でファイルハンドルの dup() をするには?

  • 数値によるファイル記述子をクローズするには?

  • なぜ DOS のパスで "C:\temp\foo" が使えないの? なぜ `C:\temp\foo.exe` はうまくいかないの?

  • なぜ glob("*.*") で全てのファイルを得られないの?

  • なぜ Perl は読みとり専用ファイルを削除してしまうの? なぜ-i clobberはファイルをプロテクトするの? これは Perl のバグじゃないの?

  • あるファイルからランダムに行を選択するには?

  • 行の配列を出力したときになぜ余計なスペースがつくの?

  • ディレクトリツリーを辿るには?

  • ディレクトリツリーを削除するには?

  • ディレクトリ全体をコピーするには?

perlfaq6: Regular Expressions

(perlfaq6: 正規表現)

この章は驚くほど小さくなっています。 なぜなら FAQ の残りの部分は正規表現を伴った回答と一緒にあちこちに 散在しているからです。 たとえば URL をデコードするとかあるものが数値かどうか確認することは 正規表現を使って処理されますが、この回答はこの資料のあらゆる所で 見つけることができます(正確には perlfaq9: "How do I decode or create those %-encodings on the web" と perlfaq4: "How do I determine whether a scalar is a number/whole/integer/float")。

  • 判読し難い、保守できないようなものにすることなく正規表現を使うには?

  • 二行以上に対するマッチングでトラブルがありました。何が悪いのでしょう?

  • 異なる行にある二つのパターンに挟まれている行を取り出すのはどうやればできますか?

  • XML, HTML あるいはその他の扱いにくくて不細工なものを正規表現でマッチングさせるには?

  • $/ に正規表現を入れたけど動きません。何が悪いの?

  • 演算子の左辺では大小文字を無視して、演算子の右辺では元の大小文字を保存しておくような置換をするには?

  • \w がローカルな文字セットにマッチするようにするには?

  • How can I match a locale-smart version of /[a-zA-Z]/ ?

  • 正規表現の中で使う変数をクォートするには?

  • /o は実際なんのためのものなのですか?

  • ファイルから、C 形式のコメントを剥ぎ取る(strip)するにはどのように正規表現を使えば良いのでしょうか?

  • Perl の正規表現をバランスされたテキストのマッチングに使えますか?

  • 正規表現が貪欲(greedy)であるとはどういうことですか?

  • 各行の単語単位に処理をするにはどうすれば良いですか?

  • 語の出現頻度や行の出現頻度のまとめを出力するには?

  • 曖昧なマッチング (approximate matching) はどうやればできますか?

  • たくさんの正規表現を一度に効率良くマッチングするには?

  • なぜ \b を使った単語境界の検索がうまく行かないのでしょうか?

  • なぜ $&amp;, $`, $' を使うとプログラムが遅くなるの?

  • 正規表現の中で \G を使うと何が良いのですか?

  • Perl の正規表現ルーチンは DFA ですか NFA ですか? また、それは POSIX に従ってますか?

  • 無効コンテキストで grep を使うことのどこが間違っているのでしょうか?

  • マルチバイト文字を含む文字列をマッチングさせるには?

  • 変数に入っている正規表現でマッチングを行うには?

perlfaq7: General Perl Language Issues

(perlfaq7: Perl 言語一般に関することがら)

このセクションでは、他のセクションにはきっちりとあてはまらないような Perl 言語に関する一般的な事柄を扱います。

  • Perl のための BNF/yacc/RE は入手できますか?

  • $@%&* のマークはなんですか? これらをいつ使えばいいのかを知るにはどうすればいいですか?

  • 文字列では常にクォートする/決してクォートしない必要があるのでしょうか? また、セミコロンやカンマについては?

  • 戻り値の一部をスキップするには?

  • 一時的に警告をブロックするには?

  • エクステンションてなんですか?

  • なぜ Perl の演算子は C の演算子とは異なった優先順位を持っているのでしょうか?

  • 構造体を宣言したり生成するには?

  • モジュールを作成するには?

  • すでに CPAN にあるモジュールを引き継ぐには?

  • クラスを作るには?

  • 変数が汚染されているかどうかを確かめるには?

  • クロージャ(closure)ってなんですか?

  • 変数の自殺(variable suicide)って何で、それをどうすれば防げますか?

  • {関数, ファイルハンドル, 配列, ハッシュ, メソッド, 正規表現} を渡したり返したりするには?

  • 静的変数を作るには?

  • 動的スコープとレキシカル(または静的)スコープとの間の違いは? local() と my() との違いは?

  • どうやれば同じ名前のレキシカル変数がスコープにあるときに動的変数にアクセスできますか?

  • 深い束縛(deep binding)と浅い束縛(shallow binding)との間の違いとは?

  • なぜ "my($foo) = <$fh>;" が正しく動作しないのでしょうか?

  • 組み込みの関数や演算子、メソッドを再定義するには?

  • 関数呼び出しを &foo で行ったときと foo() で行ったときとの違いはなんですか?

  • switch 文や case 文を作るには?

  • どうすれば未定義な変数, 関数, メソッドに対するアクセスを捕捉できますか?

  • なぜ同じファイルにあるメソッドが見つけられないのでしょうか?

  • カレントのパッケージや呼び出しパッケージはどうすればわかりますか?

  • Perl プログラムの大きなブロックをコメントアウトするには?

  • パッケージをクリアするには?

  • 変数を変数名として使うには?

  • "bad interpreter" とはどういう意味ですか?

  • C ライブラリに変更があるときに XS モジュールを再コンパイルする必要がありますか?

perlfaq8: System Interaction

(perlfaq8: システムとの相互作用)

FAQ のこのセクションでは、オペレーティングシステムとの対話に関する質問を 扱っています。 これにはプロセス間(IPC)、ユーザーインターフェース (キーボード、スクリーン、ポインティングデバイス)の制御、 その他データ操作に関連しないほとんどの事柄を含みます。

  • 実行しているオペレーティングシステムを見分けるには?

  • なぜ exec() は戻ってこないのでしょう?

  • キーボード/画面/マウスの凝った機能を使うには?

  • 色付きで何かを出力するには?

  • リターンキーを待たずにキーのデータを一つ読み取るには?

  • キーの入力待ちがあるかどうかチェックするには?

  • 画面をクリアするには?

  • 画面サイズを得るには?

  • ユーザーにパスワードを尋ねるには?

  • シリアルポートの読み書きを行うには?

  • 暗号化されたパスワードファイルを復号化するには?

  • バックグラウンドでプロセスを起動するには?

  • 制御文字やシグナルをトラップするには?

  • UNIX システムのシャドウパスワードファイルを変更するには?

  • 日付や時刻を設定するには?

  • 一秒未満の時間に対する sleep() や alarm() をするには?

  • 1 秒未満の時間を計るには?

  • atexit() や setjmp()/longjmp() をするには? (例外処理)

  • なぜ私のソケットプログラムはSystem V (Solaris) ではうまく動かないの? "Protocol not supported"というエラーメッセージの意味するところは?

  • Perl から私のシステムに固有の C 関数を呼び出すには?

  • ioctl() や syscall() で使うための include ファイルはどこで入手できますか?

  • なぜ setuid された perl スクリプトはカーネルの問題について文句を言うのでしょうか?

  • あるコマンドに対する双方向のパイプをオープンするには?

  • なぜ system() を使ったコマンドの出力を得ることができないのでしょうか?

  • 外部コマンドの STDERR を捕捉するには?

  • なぜ open() は パイプのオープンに失敗したときにエラーを返さないのでしょうか?

  • 無効コンテキストで逆クォートを使うことのなにが悪いのでしょうか?

  • シェルの処理をせずに逆クォートを呼び出すには?

  • なぜ EOF(UNIX での^D、MS-DOS での^Z)を受け取った後で STDIN から読み込むことができないの?

  • 私のシェルスクリプトを perl に変換するには?

  • telnet や ftp のセッションを実行するために perl を使うことができますか?

  • Perl で expect を書くには?
  • “ps”のようなプログラムから、perl のコマンドラインを隠す方法はありますか?

  • perl スクリプトの中で、ディレクトリを変更したり環境変数を変更しました。なぜ、スクリプトを終了したときこれらの変更は無効になってしまうの? 変更が反映されるようにするには?

  • プロセスの完了を待つことなしにそのファイルハンドルをクローズするには?

  • デーモンプロセスを fork() するには?

  • 自分が対話的に実行されているかどうかを知るには?

  • 遅いイベントをタイムアウトするには?

  • CPU のリミットを設定するには?

  • UNIX システムでゾンビを回避するには?

  • SQL データベースを使うには?

  • コントロール-C で system() が exit するようにするには?

  • ブロックせずにファイルをオープンするには?

  • シェルからと perl からのエラーを見分けるには?

  • モジュールを CPAN からインストールするには?

  • require と use の間の違いとは?

  • 自分自身のモジュール/ライブラリディレクトリを持つには?

  • 私のプログラムの置いてある場所をモジュール/ライブラリの検索パスに追加するには?

  • 実行時にインクルードパス (@INC) にディレクトリを追加するには?

  • モジュールはどこにインストールされますか?

  • socket.ph とは一体何で、それはどこで入手できますか?

perlfaq9: Web, Email and Networking

(perlfaq9: Web、メール、ネットワーク)

このセクションでは、web サイトの実行、メールの送受信、および一般的な ネットワークに関する質問を扱っています。

  • web フレームワークを使うべき?

  • どの web フレームワークを使うべき?

  • Plack と PSGI って何?

  • ある文字列から HTML を取り除くには?

  • URL の展開を行うには?

  • HTML ファイルをフェッチするには?

  • HTML フォームの処理を自動化するには?

  • web上で %-encodings をデコードしたり生成したりするには?

  • 別のページにリダイレクトするには?

  • 私の web ぺージでパスワードを入力するには?

  • 私の CGI スクリプトに悪影響をもたらすようなものを、ユーザーがフォームに入力できないようにするには?

  • メールのヘッダーを解析するには?

  • メールアドレスが正しいかチェックするには?

  • MIME/BASE64 文字列のデコードを行うには?

  • あるユーザーのメールアドレスを知るには?

  • メールを送るには?

  • メールメッセージに添付するためにどうやって MIME を使えばいいですか?

  • メールを読み出すには?

  • 私のホスト名/ドメイン名/IP アドレスを見つけるには?

  • (S)FTP ファイルをダウンロード/アップロードするには?

  • Perl で RPC を行うには?

CREDITS

Tom Christiansen wrote the original perlfaq then expanded it with the help of Nat Torkington. brian d foy substantially edited and expanded the perlfaq. perlfaq-workers and others have also supplied feedback, patches and corrections over the years.

AUTHOR AND COPYRIGHT

Tom Christiansen wrote the original version of this document. brian d foy <bdfoy@cpan.org> wrote this version. See the individual perlfaq documents for additional copyright information.

This document is available under the same terms as Perl itself. Code examples in all the perlfaq documents are in the public domain. Use them as you see fit (and at your own risk with no warranty from anyone).