Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Perlでつくったものとか

203 views

Published on

Okinawa.pm の資料です

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Perlでつくったものとか

  1. 1. OKINAWA.PM Perl でつくったものとか
  2. 2. 自己紹介? 清水隆博(アナグラ:@AnaTofuZ) 情報な2年 最近はシステムコールとかプロセスとか AmazoDushButtonで遊んでます 出来ればHTML,OnsenUI♨とかをしようと思ってます
  3. 3. 去年作ったもの
  4. 4. PaizaとかAtcoderとか初めてのPerlの練習問題くらい…
  5. 5. 言い訳 いや去年始めたばっかだから…(震え声)
  6. 6. やってみたこと Perl入学式 言語処理100本ノック(最初の部分) 初めてのPerl Acmeモジュールで遊ぶ Amon2を入れようとしてplenvで詰む DBのクエリ測定用スクリプトの作成
  7. 7. UTF-8で凹む 日本語をsplitする時の処理でまさかの内部コードに変換 ちょっと調べてみた
  8. 8. USE UTF8 なんとなくutf-8使うなら書くんじゃね? と思っていたプ ラグマ コードがutf8に書かれてる事を伝えるらい これを使った上で文字列リテラルを使うと内部表現にな る 内部表現はLatin-1の文字コード(Perl当初の文字コード?) であるので化ける
  9. 9. 詳しく良く解ってないので教えてくださいm(__)m -> また本日悩まされた
  10. 10. PLENV
  11. 11. sudoダメ,ゼッタイ.
  12. 12. やってみたいこと Acmeモジュールの作成 APIの作成 CUIbassのTwitterクライアント作成 ->今作った!!
  13. 13. PERLTWITTERCLIENT作成 とりあえずググる
  14. 14. PERLTWITTERCLIENT作成 Net::Twitterが使えそう
  15. 15. 作ったコード #!/usr/bin/env perl use strict; use warnings; use utf8; use Encode; binmode STDOUT,":utf8"; use Net::Twitter; my $consumerKey = ; my $consumerSecret = ""; my $accessToken = ""; my $accessTokenSecret = ""; my $nt = Net::Twitter ->new({ traits => [qw/OAuth API::RESTv1_1/], consumer_key => $consumerKey,
  16. 16. 製作時間20分(サンプルがあったので)
  17. 17. 最初のエラー すると Conflict detected: Role Net::Twitter::Role::API::Search excludes role 'Net::Twitt Class::MOP::Class::create_anon_class('Moose::Meta::Class=HASH(0x7fa79926c980) Net::Twitter::_create_anon_class('ARRAY(0x7fa79bce6218)', 'ARRAY(0x7fa79b Net::Twitter::new('Net::Twitter', 'HASH(0x7fa798829158)') called at p どうもcon ict起きてるらしい
  18. 18. 変更してツイート ツイートする箇所はこの様な感じ while (<STDIN>) { chomp; &tweet($_); } sub tweet { my ($msg) = @_; my $ret = $nt->update({status=>$msg}); print "Cannot post!!" unless $ret; }
  19. 19. ツイート
  20. 20. 日本語でツイート
  21. 21. UTF-8!!!!
  22. 22. デコードするように変更 use Encode; sub tweet { my ($msg) = @_; $msg = decode_utf8($msg); <- 追加!! my $ret = $nt->update({status=>$msg}); print "Cannot post!!" unless $ret; }
  23. 23. ツイートしてみる
  24. 24. MENTIONを取得もできたsub replay { my $res = $nt->mentions(); for my $mention (@$res){ my $mentionText = $mention->{text}; my $mentionUser = $mention->{user}->{screen_name}; my $mentionID = $mention->{user}->{name}; printf(" %s %s %s n",$mentionID,$mentionUser,$mentionText); } }
  25. 25. 調べてみてわからなかったこと GETリクエストとかのAPI作成の知識(そもそもAPIと は…?) 最新のPerlの書き方(ファイルハンドルはレキシカル変数 にした方がいいとか) 正規表現 UTF-8 (相変わらず)
  26. 26. おわり

×