ブックマーク / shag.hatenadiary.org (6)

  • DNS client を自作する - shag の日記

    可能な限り CPAN mobule に依存する + rawsocket という条件付きで DNS client を Perl で書いてみた。 #!/usr/local/bin/perl use strict; use warnings; use IO::Interface::Simple; use IO::Socket::INET; use Net::DNS::Packet; use Net::RawIP qw(:pcap); use App::Options( values => \%ARGV, option => { name => { type => 'string', required => 1, }, ns => { type => 'string', required => 1, }, type => { type => 'string', default => 'A', },

    DNS client を自作する - shag の日記
    harupiyo
    harupiyo 2008/08/21
  • perl.vim で package ファイルを開く - shag の日記

    ctagsのPerl拡張サポートがすこぶる素晴らしすぎる件 を見て思ったんだけど、package ファイルにジャンプしたいだけなら、perl.vim 使う方が簡単じゃないの?vim7.x だと標準添付じゃなかったっけ。 perl.vim を使えば package 名の下にカーソルがある状態で gf (goto file) コマンド入力すれば新しいバッファで package ファイルを開けます。package 名とファイル名が一致してないと無理だけど。 僕は perl.vim の "setlocal include=\\<\\(use\\\|require\\)\\>をコメントアウトして (Ctrl+N, Ctrl+P の入力補完時に path のファイルを見に行かないようにする) .vimrc に autocmd FileType perl set isfname-=-と書いて (CGI-

    perl.vim で package ファイルを開く - shag の日記
    harupiyo
    harupiyo 2007/10/02
  • Perl で utf8 文字列を byte サイズで split する - shag の日記

    utf8 な文字列を特定のバイトサイズで切り分ける処理って Perl でどう書けば一番良いのかを長いこと考えてた(あまり困ってはなかった)んだけど、UTF-8文字列をバイト数でカットした時の末尾の処理 見たら簡単に書けた。 #!/usr/bin/perl use strict; use warnings; use Encode qw( is_utf8 decode _utf8_on ); require bytes; my $utf8 = decode( 'euc-jp', "この日語テキストは euc-jp で書かれていますが utf8 に変換されます" ); my @splited = byte_split( $utf8, 12 ); binmode STDOUT, ':utf8'; printf "utf8 string = %s\n", $utf8; for my $str (@

    Perl で utf8 文字列を byte サイズで split する - shag の日記
    harupiyo
    harupiyo 2007/08/26
  • PerlIO::via::ANSIColor - shag の日記

    思いつきと勢いだけで PerlIO::via::ANSIColor というものを作って CPAN にあげました。 use PerlIO::via::ANSIColor color => 'reverse green'; binmode STDERR, ':via(ANSIColor)'; warn "this outputs is colored\n"; とすると warn で出力されるメッセージが緑の反転になります。STDOUT も普通のファイルハンドルでも使えます。Term::ANSIColor 好きにはたまらない。かも。 2007-07-23 追記 POD を更新したので追記しておきます。 use PerlIO::via::ANSIColor; PerlIO::via::ANSIColor->color('reverse red'); open my $redfh, ">&STDOU

    PerlIO::via::ANSIColor - shag の日記
    harupiyo
    harupiyo 2007/08/26
    warn で出力されるメッセージが緑の反転になります。STDOUT も普通のファイルハンドルでも使えます。Term::ANSIColor 好きにはたまらない。かも。
  • firefox に vim っぽい移動のキーバインドを設定する - shag の日記

    firefox Add-on の keyconfig は非常に便利なんですが、画面を上下に移動する操作(↑↓ と PgUp, PgDn に割り当てられているやつ)を変更できないので Google で検索していたら、この Vim Tips というところにやり方が書いてあった(最初文字化けしているのかと思ったけど、どうも中国語で書いてあるみたい)。 firefox を終了して、prefs.js に user_pref("keyconfig.main.xxx_key_PageUp", "!][][][goDoCommand('cmd_scrollPageUp');"); user_pref("keyconfig.main.xxx_key_ScrollPageDown", "!][][][goDoCommand('cmd_scrollPageDown');"); user_pref("keycon

    firefox に vim っぽい移動のキーバインドを設定する - shag の日記
    harupiyo
    harupiyo 2007/04/14
  • defined-or(//) - shag の日記

    ブログが続かないわけ | perl の作法 #2 「||=」の使い方 より引用 perl の作法 #2 「||=」の使い方 さらに、これは $value ||= $default_value; と書けます。 ※注意 $value に「0」をセットする可能性がある場合はこの書き方はできません。「0」が偽と評価されてしまうからです。その場合defined などを利用しましょう。 ということですが、||= だと空文字列も偽と評価されます。undef の時だけ値を変更したいなら //= を使うのが正解かと。 #!/usr/local/bin/perl use strict; use warnings; print "logical or (||=)\n"; printf "string = %s\n", logical_or("string"); printf "1 = %s\n", logica

    defined-or(//) - shag の日記
    harupiyo
    harupiyo 2006/10/09
  • 1