perl

MP3にID3v2を書き込む

MP3::Tag MP3のID3を操作するMP3::Tagというモジュールを使います。PODをざっと見ても使い方がいまいちよくわからないので、メモしておきます。 MP3::Tag - Module for reading tags of MP3 audio files - metacpan.orgID3そのものについてはWikipediaのID3…

ニコニコ動画のマイリストをMP3に変換してiTunesで便利に使えるmylist2mp3.pl書いた

ソース GitHub - punytan/mylist2mp3: Convert registered movies on NicoVideo's mylist to MP3 files with appropriate MP3 tags. 保存できる範囲 自分のマイリストであれば次のものが保存できます。 sm\d+ nm\d+ コミュニティ限定の動画(数字のみの動画) …

でperlism風ボット作ってみた

こ Daisuke Maki on Twitter: "perlismに検索してほしいキーワード編集できるようにしたった。" の Daisuke Maki on Twitter: "なんかもうAnyEventで書きたくなってきたけど、自重する。" 辺 Daisuke Maki on Twitter: "うむ。動いている。他にPerl関係でper…

Perlで(UTF-8)文字列を扱う基礎中の基礎

ちょっと前に記事を書いたつもりになっていて全く書いていなかったのでメモ。 これをおさえておけば、特殊なケース以外はたいていうまくいくと思います。 一番初めに #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; と書きます。日本語を…

AnyEventとblockingについてのメモ

sleep (あるいはLWP::UserAgentなどのそのほかのブロッキング処理) をすると、たとえコールバック内でも non-blocking では処理できない。 $http_request_cb で sleep しているこの例は blocking で、 sleep を消せば non-blocking になる。 #!/usr/bin/perl…

Twitter bot with AnyEvent

ニコニコ生放送のアラートサーバにつないで検索条件に引っかかるとツイートするBOT(https://twitter.com/pikipiki_bot) AnyEventの使い方が感覚的にわかってきた感じがします。が、「こんな書き方ねーよ」という点があればコメントお願いします。 Net::Twitt…

さくらのレンタルサーバでroot権限無しにCPANを使えるようにする

この記事はちょっと古いかもしれません。 最近は cpanm でうまくやる方法があるのでそちらを探した方が得策かもしれません。 _ local::lib使わなくてもMyConfig.pmの設定を変えるだけで大丈夫。 プロセス SSHでログインして次のディレクトリを作成する $HOME…

AnyEvent::Twitter::Stream使ってみた

引数にリアルタイムに検索したいワードを渡してやれば、リアルタイムで情報取れます。 AnyEventよくわかりません>< 「普通はこう書くだろう」というところがあれば、ご指摘ください #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use …

hashをvalueでソートする

忘れそうなので、メモ。 $hash = { "ほげ" => 10, "ふが" => 5, "ぴき" => 30 }; for my $key (sort { $hash->{$b} <=> $hash->{$a} } keys %$hash) { print $key, ",", $hash->{$key}, "\n"; } http://codepad.org/dRkHNzJM教えてくださった方、ありがとう…

use WWW::Shorten::Google;

GoogleのURL短縮API叩くモジュールがあったので実装してみたモジュールはGithubからもってきました。 http://github.com/yappo/p5-WWW-Shorten-Google/ #!/usr/bin/perl use strict; use warnings; use utf8; use CGI; use CGI::Carp; use WWW::Shorten::Goo…

use Smart::Comments が便利すぎる

use Smart::Comments; が便利すぎるので、主要な部分をかなり適当に意訳しました。 原文も載せておきますので、「ここおかしい」「この訳のほうが適切」という箇所を見つけた場合、報告していただけるとありがたいです。 NAME Smart::Comments - Comments th…

Unicode正規化 と Unicode::Normalize

DBに日本語文字列を INSERT して検索できるようにする時に、全角・半角での表記のぶれが問題になる。 そこで使われるのが Unicode::Normalize モジュール。 Acrive Perl 5.10.1 では標準。結論 1. NFKC 関数で正規化し、それを検索用カラムに突っ込む 2. 検…

Queueの管理で並列ダウンロード

3スレッドでダウンロードを並列して行いたい。スレッドのキューを使って解決できた use strict; use warnings; use threads; use threads::shared; use Thread::Queue; use LWP::UserAgent; # ダウンロードキューを生成する my @download_list = ( "http://e…

use threads; するときに注意すべきこと の続編

[Perl][threads] use threads; するときに注意すべきこと http://d.hatena.ne.jp/punitan/20091018/1255892339これの続編なぜスレッド処理をするとインタプリタが落ちるのか原因がわかった。 Thread safety use encoding ... is not thread-safe (i.e., do n…

XML::RSSを使う時の注意点

RSSのitemの中に <nicolive:community_name>hogehoge</nicolive:community_name> のような名前空間がある場合は、 $rss->add_module(prefix=>'nicolive', uri=>'http://live.nicovideo.jp/'); のように xmlnsを指定してから記述しないとデータを読めない。 add_moduleしておけば、 $rssData{coName} = $item->{ni…

use threads; するときに注意すべきこと

use threads; で1日嵌った。 環境は Active Perl - v5.10.1 built for MSWin32-x86-multi-threadthreadsを使う時、標準出力のエンコードをbinmodeで指定しておくとインタプリタが落ちる。なので、 my $cp932 = find_encoding('cp932'); print $cp932->encode…