- ベストアンサー
パールの組み込み関数dumpって
牛歩ですがプログラミングPerl読み進めています! 今回はdumpという組み込み関数について質問です。 関数の詳細はさておき、とりあえずこの関数を呼び出すとバイナリーファイルが作成されると思っているのですが・・・ プログラムを実行すると Aborted という味気ないエラーを表示して終了します・・・ そしてバイナリーファイルも見あたりません。 どこか決まった場所に出来るのでしょうか。 どなたか教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まずはじめに。この関数は最早時代遅れのものでいまさら覚えても 何の役にも立ちません。多分。 perldoc -f dump から This function is now largely obsolete, partly because it's very hard to convert a core file into an executable, and because the real compiler backends for generating portable bytecode and compilable C code have superseded it. That's why you should now invoke it as "CORE::dump()", if you don't want to be warned against a possible typo. のように 'obsolete' な代物です。 この関数は dump This function causes an immediate core dump. とあるように、関数を実行するとまさしく「コアをはいて終了」 します。バグありプログラムでコアをはいて異常終了したとき と同じようにカレントディレクトリにコアファイルができてい るはずですが、設定によってはコアファイルを作らないように なってたりしますので、その辺の問題かもしれません。 Manpage of CORE http://www.linux.or.jp/JM/html/LDP_man-pages/man5/core.5.html この辺を参考にどうぞ。
お礼
sakusaker7さん、ご回答ありがとうございます。 なるほど設定によってコアファイルが出来たり出来なかったりするのですね。 ご紹介いただいたページを見たところ、 どうも RLIMIT_CORE か RLIMIT_FSIZE が 0 に設定されている というのがあやしいです。 でも、それを確認したり変更したりするにはC言語とgetrlimitという関数について知る必要があるため、 また、dumpはすでに骨董品になっているとのことで、 ひとまず設定を変更すればバイナリーファイルができるのだということを記憶して、先を読み進めることにします。 3章を読んでいるとパールの組み込み関数には、かなりの頻度で骨董品が含まれていることを感じますw けっこう使えそうな関数と思っていたdbmopenも実はtieの登場以前に書かれたコードが、最新の環境でも動くように残された過去の産物であったとは驚きですね!