Perl - リファレンスの説明(3)

Perl 初心者が初心者なりにリファレンスを説明してみるの最終回3回目。1回目 はリファレンスを取得することと、そのリファレンスから元のものにアクセスする(デリファレンスする)方法を書いた。2回目 は無名配列、無名ハッシュをどこかに作ってリファレ…

Perl - リファレンスの説明(2)

Perl 初心者が初心者なりにリファレンスを説明してみるの2回目。前回はリファレンスを取得することと、そのリファレンスから元のものにアクセスする(デリファレンスする)方法を書いた。今回は無名配列、無名ハッシュ、無名サブルーチン、無名スカラーにつ…

Perl - Encode::LEAVE_SRC を使う

深沢千尋、文字コード「超」研究 改訂第2版、ラトルズ、2011 を読みながら文字コードについて勉強している。実際に自分でも何か書いてみようと思い、文字 ä がいろいろな文字コードだと、どんなバイトで表されるかを調べるプログラムを書いてみた。このとき…

Perl - Data::Dumper の冗長さを調整する

Use Data::Dump filters for nicer pretty-printing | The Effective Perler を読んで、有益だと思ったのでそれをここにも書いておく。次の Perl のコード use DateTime; use List::Util qw(shuffle); use Data::Dumper; my $data = { today => DateTime->no…

Perl - ディレクトリ内のファイルを最終変更時刻でソートして連番をつけてリネームする

ディレクトリ内のファイルを作成時間の昇順ルールで添え字をつけてリネームするスクリプト - Kshi_Kshi's blog ディレクトリ内のファイルを作成時刻でソートして連番をつけてリネームする - Study08.net 対シンバシ殲滅用人型機動兵器 を Perl でやってみた…

Perl - 短縮 URL の元を調べる

短縮 URL の元の URL を調べるスクリプト。短縮 URL の元が、また短縮 URL だったら、さらにその元を調べるようにしてる。 実行例 ソースコード wget を使うバージョン (日本語化してる wget は修正必要) #!/usr/bin/env perl use strict; use warnings; m…

vim の改行コードの表示

vim の改行コードの表示は dos, unix, mac とかになっていてよく意味が分からない。これを のように CR+LF, LF, CR と表示するように変えてる。それも合わせて今の僕の .vimrc はこのようになってる。 syntax on set number set hlsearch set showcmd set sh…

Twitter の広告を消すとか、左右逆転とか

ブラウザの拡張機能 Stylish や Stylist で以下を適用。 /* 広告を消す */ div[data-component-term="japanese_ad"] { display: none !important; } /* 左右逆転 */ div.dashboard { float: right !important; } div.content-main { float: left !important;…

1 と 0.999... は等しいか否か

ある人にタイトルの質問をしたら、思わぬ答えが返ってきた。曰く、等しくない、その理由は 0.999... は 1 にどんどん近づいていってるけど、決して 1 には届かないから。もう少し理由を訊いてみると、その人にとって 0.999... とはある止まった数を表してい…

Perl - Backus–Naur Form

Backus–Naur Form (BNF) というものを最近知って感動したのでそれを書く。 問題。以下のような整数の四則演算の式が標準入力から与えられたとき、それの答えを求めるプログラムを作れ。 12 + 9 - 7 + 10 5 * 6 - 8 / 2 * 7 (-5) * 7 + 21 / ( 8 - 1 )全く知…

Perl - ワンライナー

Mac で sed を使ってタブを空白4文字に置換しようと思って cat file.txt | sed 's/\t/ /g'としたら、文字 t が空白4文字になった。sed はもう使いません。Perl でやります。 cat file.txt | perl -pe 's/\t/ /g'でおk。別に cat を使わず perl -pe 's/\t/ …

Perl - リファレンスの説明(1)

Perl 初心者が初心者なりにリファレンスを説明してみる。「初めてのPerl」を読み終わって、いざ何かやろうと思ってもリファレンスが分かってなかったら何もできなかった。 リファレンスとは、厳密には知らないけど、変数の置いてある場所のアドレスのことと…

Perl - 2, 8, 10, 16 進法とかの変換

pack, unpack, oct, hex などいろいろ使えば、A 進法から B 進法に変換できる。これをまとめてやる Integer クラスを Perl で作ってみた。2-16 進法まで扱えて、例えば 12 進法の 4A7 は use Integer; my $int = Integer->new_as_base_of(12, "4A7"); で作れ…

Perl - YouTube の動画の音声を iTunes に登録

Perl のモジュール WWW-YouTube-Download と ffmpeg を使って、YouTube から動画をダウンロードしてきてその音声を iTunes に登録させる話。LWP::UserAgent のコールバックの書き方が勉強になった。 Windows でも Mac でも OK ffmpeg は Windows は お気に入…

Perl - RSA 暗号の仕組みを見てみる

ssh-keygen すると作られる id_rsa, id_rsa.pub でその名を知ってる RSA 暗号の仕組みを Perl を使って見てみる。 RSA 暗号の説明は RSA暗号 - Wikipedia 和田秀男, 計算数学, 朝倉書店 の §35 「暗号」 にある。簡単に流れを書くと、 大きな2つの素数 p, q…

Perl - Google に無線 LAN アクセスポイントの場所を聞く

勉強のため、 Google に無線 LAN アクセスポイントの MAC アドレスを 2 つを投げて、住所を得るスクリプトを Perl で書いてみた。 POST するデータをハッシュのリファレンスで送りたかったけど、それだとエラーがでたので(なぜ?)、文字列にしておいた。 …

Perl - 現在の日時を表示

あまり面倒なことせずに、2012-01-21 (土) 19:22 のように表示させる。 print now(); # 2012-01-21 (土) 19:22 など sub now { my ($minite, $hour, $day, $month, $year, $wday) = (localtime)[1 .. 6]; $wday = qw|日 月 火 水 木 金 土|[$wday]; sprintf …