No.2ベストアンサー
- 回答日時:
__DATA__ トークンは、コレより以降にプログラムがない(データブロックの開始位置を示す)モノです。
既にでているようにこの部分のデータは、DATA ハンドルで普通のファイルのように(プログラム内にファイルが格納されているかのように)アクセスできます。
特殊な用法として、普通のファイルのようにstat(DATA)を使うことで、プログラムのサイズや最終更新日付を得ることができます。
同様のものに__END__がありますが、これは、メインパッケージの __DATA__ を表します。
また、自パッケージだけでなく、他パッケージの__DATA__ の部分は
パッケージ名::DATA
で読み込むことができます。
(通常はmain::DATA のmain が省略されている)
__END__ を使用した場合には、他パッケージからは読込できません。
繰り返し読み込む場合には、
$pos=tell(DATA);
しておいて
seek(DATA,$pos,0);
で読込位置をリセットします。
(seek を使うと、__END__ 以前の部分(プログラム)も読み込める)
また、CPAN モジュールの Inline::Files を使うと、複数のファイルを埋め込むことができるようになります。
いつも詳しい回答ありがとうございます。
stat(DATA)はお礼を書き終えたら早速試してみます。
__END__と__DATA__の違いもわかりました。
パッケージはまだサンプル以外で使ったことがないので、
どういうときに使ったら便利なのかピンときませんが、
使うときまでそういうものがあったと覚えておきます。
seek関数を使って読み込み位置を制御できるのは便利ですね。
1行ずつ読み込みを制御するのでしょうか?これも試してみます。
Inline::Filesの使い方はいまいちよくわかりませんが、
現時点ではそういうものがあるとだけ覚えておきます。
どうもありがとうございました。
No.3
- 回答日時:
__DATA__の方はあまり使ったこと有りませんが、<DATA>の方であれば__END__と組み合わせてちょっとしたスクリプトの動作確認なんかによく使ったりします。
いちいち読込用のファイルを作成してopenするのが面倒な時とかです。参考URLはちょっとした調べ物などに便利な本です。
参考URL:http://www.7andy.jp/books/detail?accd=30527064
売っているのはよくみかけますが、丸みを帯びた字がいい加減な印象だったので、
きちんと書かれていないのではないかという先入観を持っていました。
本屋さんに行ったら内容をよく読んでみます。
現在の自分のレベルと合っているか確認して、使えそうだったら買ってみます。
ありがとうございました。
No.1
- 回答日時:
__DATA__は特殊リテラルでファイルハンドルDATAで読み出す事ができます。
具体例は参考URLの「プログラム内データの読み込み」を読んでみてください。こちらについては、難易度というよりあまり使用されていないからというのが、解説が省略されている理由のような気がします。
参考URL:http://www.rfs.jp/sb/perl/02/02.html#8%EF%BC%8E% …
せっかく回答いただいて申し訳有りません。
URLの説明を読みましたが、残念ながらわかったようでよくわかりませんでした。
__DATA__がなく一覧と言えるか微妙でした。
また、教えていただいたURLの内容だと__END__と__DATA__の違いが明確になりませんでした。
__DATA__は特殊リテラルと言うんですね。
この名称がわかったので知識の土台が増えました。
今後は特殊リテラルで検索することができるようになりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
エクセルマクロについて CSVフ...
-
VBAで巨大なファイルの途中から...
-
データファイルをプロットする(...
-
perlで、後ろの行を読んで、前...
-
エクセルVBA コードが同じでも...
-
batファイルでrenameができませ...
-
バッチファイルの作り方(CSV→...
-
Perlで特定文字列から特定文字...
-
配列の中に重複文字列があるか...
-
パスワードを外部ファイルから...
-
行を指定して削除する方法PERL
-
[arduino]数値の大きなデータを...
-
データの日付でソートをしたい
-
1行がやたら長いテキストをバッ...
-
FindFirstFileとFindNextFileで...
-
ディレクトリの判別
-
【Access2003】VBAでタブ区切り...
-
Perlで特定行から特定行までを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA コードが同じでも...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
VBAで巨大なファイルの途中から...
-
JavaでCSVファイルを高速に読む...
-
Perlの変数に文字数制限(容量...
-
ReadLineでの読み出し行を指定する
-
MATLAB グローバル変数の宣言
-
perlで、後ろの行を読んで、前...
-
2つのCSVファイルをマッチング
-
拡張子 ”log” と ” dat” の違い
-
CSVが可変長の場合の検索方法
-
csvファイル改行コードの置換に...
-
C言語でのファイルのデータ更...
-
5万件対5万件のデータを高速...
-
VBScriptでファイル保存先のデ...
-
エクセルマクロについて CSVフ...
-
__DATA__の意味
おすすめ情報