ファイルの最後の行を取得する

2023/6/25 [01:45:40] (日) 天気

perlを使ってテキストファイルの最後の行を取得したい、というネタ。

tailでええやんということだけど、外部コマンドを使わないでperlだけで完結させたい。


ファイルを全部読み込んで最後の行だけを取り出す。

open(FH, $file); my @buf=<FH>; close(FH); pop(@buf)

これが一番簡単だし、ファイルを配列に全部読み込むのでその後の展開も応用にも使える、ド定番なやりかた。

読み込む、処理したいのがテキストファイルなら、ファイルサイズもしれてるだろうから、これで十分。わたしもいつもは何をするにもこのやり方。


だけど、データベースに食わせる元ネタのcsvファイルとかログファイルだと、ファイルサイズがギガバイトサイズのものがあったりして頭が頭痛。

最終行だけを知りたいのに、そんな阿呆みたいにでかいファイルを全部読み込むのは流石にもったいなくて馬鹿馬鹿しい、という貧乏性、ていうかリアルでビンボなんだけど。


ぐーぐる先生に聞いてみたら、検索結果からそのものズバリは見つけられなかったけど、seek()を使うのが良いらしいということはわかったのでスクリプトを書いてみた。


my $file = ’input.csv’;
my $filesize = (stat($file))[7];
open(FH, $file) || die;
my $pos = ($filesize - 3);
while(--$pos){
    my $buf;
    seek(FH, $pos, 0);
    read(FH, $buf, 1);
    last if $buf =~ m![\r\n]!;
}
my $line;
seek(FH, $pos+1, 0);
read(FH, $line, ($filesize - $pos) );
close(FH);
print $line;

seekはファイルハンドルのファイルポインタを任意の位置に設定する、つまり、開いてるファイルのどこを見るのかを指定できる。

ファイルサイズ=ファイルの末尾の位置から1バイトずつ先頭に向かってずらしていって、その位置から1バイト読み込んで、それが改行コードだったら、そこが最後の行の始まりということになる。


初期値をファイルサイズ-3としたのはファイル末尾に改行コードがあったらそこで終了してしまうから。

改行コードのバイト数はLFやCRだけなら1バイト、WINDOWSで一般的なCRLFは2バイト。なので、3バイト戻して1バイトを読むことで、最後の改行は無視できる。


まだ実際に大きなファイルに対して使ってないし、seek()で1バイトずつポインタをずらして1バイトずつ読み込んで、というのが本当に効率的なのかはよくわかってない。少なくとも、ファイルを頭っから順に読んでるわけじゃないのでファイルの大きさは関係ない、はず。

ファイルサイズが大きくなるにつれ、処理速度もそれにつれて遅くなるようなことにはならない。


とりあえずこいつを暫定首位に認定しておこう。


perlは本当にいろんなことをいろんなやり方でできるのが気持ち良い。

今回、ぐーぐる先生に聞いてみたら、古いエントリばかりが目立った、てことはもうあまり使われていない、ポピュラーな言語じゃなくなった、のかも知れない。

ていうか、この世界、あっという間に古びる。perlもすでに古代語となって、perl話者が少なくなってきたということかもしれない。ラテン語やサンスクリット語みたいなポジションになったのかもなあ。


だけど、perlはええぞ、マジで。

image

オールドメディア圧勝の次が見えないかな

2014/6/25 [13:30:50] (水) 天気

エロ本エロ漫画雑誌の編集をやっていた頃からしみじみ実感。ラスト・マン・スタンディングというか作家や漫画家など創作する人間が最後まで生き残ると思ってる。その周辺周囲は時代の変化とともに変わるものだし代替がきくものだろう。


コンテンツを作るところこそが強いという記事が話題になっていて激しく同意・首肯。ぜひ一読。


「ネットはオールドメディアが圧勝」――川上量生ドワンゴ会長インタビュー(上)

http://diamond.jp/articles/-/55086

自分で取材しないで、他媒体のニュースを集めたり、そのニュースを見て記事を書いたりしています。ページビュー(PV)を集め、広告収入を得るというモデル。
結局、コンテンツを自ら作っているところが勝つと思いますよ。みなさん、勘違いしていますよ。本当に勘違いしている。新興のネットメディア対オールドメディアの勝負は、実のところ、オールドメディアの圧勝です。


んでもって、この手の話になるとほぼ毎度毎度、ブランド力・コンテンツ制作力について「やっぱスゲー」ということになるんだけど。

昨日今日いきなりブランド力をつけたワケじゃなくてコンテンツも今朝作ったものじゃない。金も人も時間も注ぎ込んでの積み重ねの結果としてコンテンツの質も上がり量も蓄積されブランドとなっている。

美味しいところだけ見てスゲーは違う。


ネットで集金する方法が(記事にもあるように)現状だと広告モデルというやつが中心で、それっていうのは以前この雑記にも書いたように

広告収入のためにエサとしてコンテンツを集める。広告収入がいくらになるかわからないし、エサに金などかけたくない。ましてやエサ=コンテンツに対する敬意などどこにもない。
広告収入のためにエサとしてユーザーを集める。タダのコンテンツで集まってくるんだからテキトーなものを放り込んでおけばいい。集めさえすれば広告収入となる。
というコンテンツにとって負の連鎖なような気がする。


ネットの良いところはスピードとハードルの低さで、ネットの悪いところもスピードとハードルの低さ。

簡単に始められるしコンパクトなところからスピード感を持ってやりましょう。「日本初」「世界初」を取りましょう。コストもかかってないのでダメだったら方向転換、止めればいいんです。

オールドメディアは紙印刷倉庫輸送書店。資金手続き手配など始めるのが大変だし、一度始めちゃったらもろもろ絡むので簡単には止められない。でもコストがかかるだけあって集金装置もある。

(今はなき古巣のエロ本出版社は自主廃業なんだけど、取次ぎや書店からの返品などの処理のためだけに2年以上かかったはず)


ブランドになるにはコスト(人、金、時間)をかけてコンテンツを積み上げていくしかないと思う。そのための集金の仕組みがネットだと難しい…ってそれを思いついたら今頃こんなところでヨタ話書いてない。

て、一朝一夕で出来上がるものじゃないからこそ「ブランド」だしね。


現状やっぱり「ネットはタダ」だもんなぁ。


[更新]2026-02-01 12:47:14

app storeで電子書籍を

2012/6/25 [22:12:52] (月) 天気

ここんとこ種まきばかりの、フリーランス=無職状態だったんだけど、そのうちのひとつ、app storeで電子書籍の制作販売にいっちょかみできそうな。ていうことで企画持ち込み。

・400字詰め原稿用紙70~80枚(3万字程度)

・ライトノベルでちょいエロ/女がほげほげする実話エッチ系

・印税や、ミニマムギャランティ(見込み印税=初刷り部数印税)などは交渉中

ぶっちゃけ。電子書籍は紙と、いろんなところでケタがひとつ違う。今app storeに並んでる電子書籍を見ると、ほぼ85円。紙の本の10分の1ですな。ただ、売れてる本などは4万部ぐらい出ている。いま時、紙の本だと1万部刷って実売6割だといい方じゃないか。


ラインナップを作って企画を持ち込みたいんで、絶賛原稿募集中、作家・ライター・イラストレーター募集中(企画や交渉などを一緒にやろうという編集のかたも)


メールか、電話をください。もう少し具体的にお話できます。制作販売元はすでにapp storeで実績のあるところなので、販売力は見込めると思います。


よろしくお願いします。

[更新]2026-02-02 08:47:52

ケータイ

2007/6/25 [23:36:39] (月) 天気

なんとなくケータイの機種変更。今まで使ってたやつに不満もなかったんだけど、ネットやその他もろもろ時代遅れにならないように、ワンセグとかFeliCaとかLISMOとか、持っていて損にはならんだろう、と。とはいえ、こうやってzaurusを使っていてケータイにはほとんど興味もなかったもんだから、どれがいいのかぴんとこない。実際に店頭で触ってみてキーの押しやすさが群を抜いてたW51CAにした。

今買わないと、このキーボード(?)搭載機はもうないらしいし。

ケータイを今まで3台使ってきたけど、左手でも使えるのはこれが初めて。ちょっと驚いたかも。うわさのワンセグってのも予想以上にちゃんと見られるテレビだし、FeliCaもいざってときに重宝しそうだし。

んでもって、ポイントを複数使ってみたらタダで機種変更ができたのもホクホク感を高めてくれるのでありました。


ケータイでメールなんて、打ちにくいキーにイライラすることが多かったけど、これでそのあたりのストレスは軽減されそうだ。パソコンもキーボードを変えるだけでずいぶん使い勝手が変わるし、ユーザーインターフェイスって、ちょっとしたことなんだろうけど大切だなぁ。


30度超はいけません

2005/6/25 [17:42:37] (土) 天気

暴飲暴食の翌日が30度超ってのはかんべんしてほしーぞ。ひたすら部屋でごろごろするだけやね。

てことで、ピクミン2をやってみたり雑記帖のスタイルシートを書いてみたり。ピクミンは傑作っす!無理やりジャンルわけするとアクションパズルゲームなんだろうけど、キャラの動きやアイテムにいちいち小技小細工がきいててニヤリとさせられるしパズルも解けた時の「なるほどーっ!感」が大きいものが多くて飽きない。

さすがにこれでいちんち潰すと失業者として、ひととしていかがなものかと思うのでスタイルシートもいじってみた、というのが今日の真相。なんのこっちゃ。

この雑記帖は一見perl5で書かれてるけどキモの部分はperl4の書式、とスクリプトをひとさまに突っ込まれるとすみませんとしか言いようのないシロモノ。とはいえ、最近の流行りを少しだけ取り入れて見た目のカスタマイズを自由にできるようにしてある。その分、設定・スタイルをいじりだすとキリがないんだけど。これもパズルと同じで面白い。

ついでにこないだからいじってるメモをリンクで繋ぐCGIをパスワード入力を殺してzaurusにいれて使ってみた。思ったより面白いものになりそうだなぁ、と自画自賛芸。ふた昔前に、ちょっとだけ流行ったゲームブック(分岐のある小説本)とか、ZORKのようなテキストアドベンチャーを作るのに面白いかも。またネット上で複数人でのリレーなんちゃら、連想ゲームするのにも使えそうだったり。zaurusで持ち歩いてるので、使い道に関して、もう少し練って遊んでみよう。


そういや、今日あたりから自治会費の集金にも回らないといけないな。


[更新]2012-06-21 13:19:19

<<2026/06>>
 123456
78910111213
14151617181920
21222324252627
282930

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub
検索: