あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

perl

CPANを使ってみようとしてみた

はてなブックマークのバックアップをするスクリプトを公開しているところを発見したので、試そうとしてみた。 http://www.nilab.info/zurazure2/archives/000098.html そのまま動かそうとしたものの、XML::Atom::Feedがない、というエラーが出て進まないので…

過去のカテゴリをまとめて変換するスクリプト

前に、はてなダイアリーでカテゴリを後から簡単に変えられるツール - あんにんにっき。 という記事でカテゴリを簡単に変えられないものか、と書いたのだが、どうも思ったようなツールが見つからないので作ってみた。 とはいえ、全部作るのは大変(無理)なの…

続 初めてのPerlを買う事にする。

先日、EffectivePerlを買ってぽつぽつと読んでいるのだが、いまいちよく分からなくて困っている。 何がわからないかというと、リファレンスとかいう概念が出てきて、これがいまいちよく分からないのが引っかかりの原因の様子。 引っかかっているなりに、読み…

Windows版Perlで、system関数

初めてのPerl 第3版では、system関数はshUnixのデフォルトのシェル)を使う、という説明を書いてあって、Windowsの事には全く触れていなかったので、Winではどうなるのか?と思いつつ電車の中で読んでいた。 で、帰って実験してみた結果。 結論からいうと、可…

perlで.oldで終わるファイル名を.newで終わるようにすべて書き換える方法

初めてのPerl 第3版にでていた。便利そうだ。 プログラム丸々引用はあれなので、自分用にページ番号だけメモ。212ページ。

perlでファイルを開く

<とか>を使って、ファイルを読み込み用に開くのか、書き出しように開くのかを指定して開けるらしい。他の言語だと、もう少しややこしい記法だったりするが、さすがperlというところだろうか。 しかも、シェルのリダイレクト記号と同じにしてあるからわかりや…

perlで正規表現で後方参照

後方参照ってのは、正規表現で ( ) で括っておいて、その後でそこでマッチした文字列と同じ内容、という事を指し示すための方式。 たとえば、CSVデータを分割して、そこの2番目と3番目の項目を比較する、なんてのは $_ =~ /(.*),(.*),(.*)/; if ($2 != $3){ …

perlでファイルサイズの比較をする

use strict; use DirHandle; my @dir_list = ( "T:\\remote\\classes", "c:\\local\\classes", ); my %namelist = &get_class_list(@dir_list); foreach my $name (sort keys(%namelist)) { if((stat "$dir_list[0]/$name")[7] != (stat "$dir_list[1]/$name…

perlでファイルサイズを調べる

print (stat "$file_name")[7] . "\n"; これで、$file_name にフルパスでファイル名を渡すと、バイト単位でサイズが返ってくる。 メモメモ。 で、これを利用して、リモートのファイルとローカルのファイルとで差が無いかをチェックするスクリプトを検討中。…

perlで正規表現を使ってみた

行頭が HH:MM 形式の時間表記で始まっている時のみ、その行を印刷してみる。 while(<>){ chomp; if (/^[0-2][0-9]:[0-5][0-9]/){ print "$_\n"; } } 正規表現自体は、他の言語で使ったことがあるので、そんな難しくは無い。 if文の条件として直接指定できた…

上のスクリプトの内容の補足

今はわかってても後になったら何でこんなことしてるかわからない、というのがプログラムの基本なので、未来の自分に向けて補足を書いておく。 while(<>) で入力ファイルを順に処理。 chomp で、ファイル内の1行から改行コードを取り除き(chompの引数がない時…

perlでsplitで正規表現

前に perlで配列でpushしてforeach - あんにんにっき。 のところで「splitの中で、 split(/./, だとだめで、 split(/\./, だと大丈夫なのは何でかはわからないがたぶんそのうちわかるだろう」、と書いていたがわかったのでメモ(てか、うすうすそうじゃない…

perlで作業時間管理のファイルを処理してみる

ものの本によると、自分の作業時間を記録するという事には、良い効能があるらしい。その辺の効能はこの記事の内容では取り扱わないとして、とりあえず良いらしいので記録をするようにしてはいる。 ところで記録したデータは集計し、統計し、情報と呼べる段階…

STDINで標準入力の内容を受け取ってみる

chomp($line = <STDIN>); たったこれだけで標準入力からデータを読み込めるとの事。しかも、受け取った中身から改行文字の削除まで。なんて簡単。これが他の言語だったらどれだけ手間がかかる事か。 で、ダイヤモンド演算子というのもあった。最初、起動引数用の処</stdin>…

perlで配列をprintしてみる。

perlの配列をprintで標準出力に出力してみる。 @array = ("a", "b", "c"); #配列の中身 print @array; 出力結果→abc print "@array"; 出力結果→a b c print @array . "\n" 出力結果→3 最初の二つの例は本のとおりだったのだが、何気に改行してみたら出力結果…

perlでhashを使ってみる

hashに値を入れて、その値を取り出す。perlは後書き優先との事なので、違う値をあとで入れたらその値が有効になるらしい。 $hash{"aaa"} = "bbb"; print $hash{"aaa"}; まとめて入れることもできる。最後に , をつけていても特に問題無い、ってのは嬉しいと…

vimでperlを書く

似非vim使いの私は知らなかったのだが、Cntl-NとCntl-Pで、変数や組み込み関数の補完をしてくれるようだ。これは便利。

perlでmy演算子とuse strictとreturn

my演算子を使うと、変数のスコープをブロックに絞れるとのこと。今まで、意味知らずに使っていた。 なおかつ、use strict と入れておけば変数の宣言をmyで行うよう強制するとのこと。これは、今まで使っている言語と感覚的に似ていて使いやすそうだ。一応、…

pl2bat

今日知ったのだが、pl2batというバッチファイルがWindows版のPerlには含まれていて、 pl2bat test.pl とかやると、同じディレクトリに test.bat が出来て、 test とやるだけで実行できるようす。 とりあえず、脳の片隅にでも置いておくことに。

perlでスカラー値とリスト

perlは、スカラー値とリストの境界が曖昧というか、スカラー値が期待されているところにリストを入れようとしても、逆にリストが期待されているところにスカラー値を入れようとしてもそれなりに動くらしい。 さっそく試してみる。 foreach ("test"){ print $…

perlで配列でpushしてforeach

何年か後、なんじゃ、こんな恥ずかしいコードさらしていたのか、といえるくらいに上達する事を目指して日々頑張ってみる。 とりあえず、昨日の続き。特定のディレクトリ(下のソースだと、カレントディレクトリ)の一覧を取得して、拡張子がtxtのものだけ出…

perlで遊び始めてみた。

とりあえず、c:\tmp以下のファイルの一覧を取り出して、ファイル数カウントしてその数を表示してみた(ディレクトリも数に含む)。 use DirHandleとか、知らないと書けない。.NETの世界に住んでいたときは、ファイルとかはIOだろうな、と思ってIO. とタイプ…