decadence

個人のメモ帳

文字の扱い

  • perlの内部で取り扱う文字列は内部文字列として扱っている
  • 内部文字列としてはflagged UTF8というものを用いている
  • decode_utf8($str)を用いれば内部文字列に変換する事が出来る
  • use utf8を用いた場合には文字列リテラルは内部文字列を作り出す
  • 逆にバイナリ表現に戻す場合(DBに戻す場合など)にはencode(ENCODING, $str)を用いる
  • 内部文字列を直接printしようとした際:'Wide character in print ~'→encodeを行う必要がある
  • read や<$fh>はバイナリ列を取り扱う
  • 試して無いけど出来るのかな
open時にエンコーディングを指定する
open(my $fh, '<:encoding(utf8)', $path) or die;


参考:VOYAGE GROUP エンジニアブログ : あなたにも今日こそPerlの文字化けが理解できるたった一つの原則

perlでtwitter2

  • オートフォロー返し

followersとfriendsの差分を取りフォローする

MeCabにより語句を取り出し配列に格納
興味本位でDBとしてKyoto Cabinet: a straightforward implementation of DBMを使ってみた

KyotoCabinetによるDBから取り出し文章を生成する

  • 追記

結局rssを取得して欲しいものだけ呟く,重要なものは自分にreplyするbot
上記に書いたような機能だけ持ったbotっぽいもの
2個のコードを書いたんですが途中で色々事故あって一から書いたりしてううむ…
Page not found · GitHubに後者のコードを置いてみました

perlでtwitter

twitter公式からアプリ用の情報を取得します.(省略)
.config.ymlに以下のように記述
パスワードなど入っているのでchmod 600 .config.ymlとかにしときましょう.

consumer_key: "~~~~~~~~~~~"
consumer_secret: "~~~~~~~~~~~"
access_token: "~~~~~~~~~~~"
access_token_secret: "~~~~~~~~~~~"

yamlファイルは最後に改行が必要なので注意.
実際に呟いてみるサンプル

#!/opt/local/bin/perl -w

use utf8;
use strict;
use YAML::Tiny;
use Net::Twitter;

my $configFile = '.config.yml';
my $config = (YAML::Tiny->read($configFile))->[0] ||
    die "error_yaml : ", YAML::Tiny->errstr;
my $twit = Net::Twitter->new(
    traits => [qw/OAuth API::REST/],
    consumer_key => $config->{"consumer_key"},
    consumer_secret => $config->{"consumer_secret"},
    access_token => $config->{"access_token"},
    access_token_secret => $config->{"access_token_secret"},
    );

$twit->update('perlからtwitterを更新するテスト') ||
    die "error_twit_update : ", $!;

__END__

登録したアプリを連動させたアカウントで確かめてみる.出来ました.

院試前日…