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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- 英語 From the data mentioned that extracted from the cu 1 2023/01/25 19:55
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- 日本語 公用文における句点の打ち方について 2 2022/05/07 16:47
- その他(Microsoft Office) Excel 2列分のDATAの並べ替え 1 2023/01/01 17:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
openした後、closeしないでプロ...
-
VBAでCSVファイルの特定行を書...
-
エクセルVBA コードが同じでも...
-
ExcelをCSV書き出す場合のシー...
-
ファイルからある文字列の個数...
-
2つのCSVファイルをマッチング
-
C言語でのファイルのデータ更...
-
形態素解析の解析内容を各品詞...
-
プログラミング(流れ図とコー...
-
拡張子 ”log” と ” dat” の違い
-
CSVが可変長の場合の検索方法
-
perlで、後ろの行を読んで、前...
-
Perlの変数に文字数制限(容量...
-
awkスクリプトでダブルクォーテ...
-
バッチファイルの作り方(CSV→...
-
csvファイルの横方向への改行に...
-
drtファイルはどうしたら開...
-
無料配布の郵便番号自動入力cgi...
-
close()で例外が投げられる理由
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
ReadLineでの読み出し行を指定する
-
JavaでCSVファイルを高速に読む...
-
MATLAB グローバル変数の宣言
-
エクセルVBA コードが同じでも...
-
Perlの変数に文字数制限(容量...
-
perlで、後ろの行を読んで、前...
-
2つのCSVファイルをマッチング
-
C言語でのファイルのデータ更...
-
VB6.0でDB接続する際に切断時の...
-
CSVが可変長の場合の検索方法
-
perlで容量の大きいCSVファイル...
-
1ファイルずつ読み込みたい
-
VBScriptでファイル保存先のデ...
-
C#でCSVファイルを逐一更新したい
-
perl で googleAPIを呼び出す...
おすすめ情報