Home > Archives > 2008-05
2008-05
perl-mongers.orgのメール送信の記事にちとつっこみ
- 2008-05-30 (金)
- perl
はてブのほうでちょろっと書いたんだけど、
Mail::Sendmail でメール送信の以下のコードについて。
use Encode;
use utf8;
my $subject = "テスト";
my $message = "テストです。ほげほげ。";
foreach my $str ( $subject, $message ) {
utf8::encode($str);
Encode::from_to( $str, "utf8", "iso-2022-jp" );
}
ここでutf8::encode => Encode::from_toするのは冗長
encode('iso-2022-jp', $str);
だけでおk。
use utf8してなければ(で、ソースの文字コードがutf8であれば)
Encode::from_to( $str, "utf8", "iso-2022-jp" );
だけでおk。
http://b.hatena.ne.jp/kamawada/20080530#bookmark-8776610
encode('iso-2022-jp', $str); しても結局メールを送るときにutf8フラグを落とさなきゃいけないので
といってますがそれは勘違いかと・・・。
EncodeのPODのencodeの説明のところにも
the UTF8 flag for $octets is always off
とかかれていますし。
以下確認コードでっす。
#!/usr//bin/perl
use strict;
use utf8;
use Encode;
use Devel::Peek;
my $str = 'あああいうえお';
print Dump($str);
print Dump(simple_encode($str));
print Dump(encode_from_to($str));
sub simple_encode {
my $str = shift;
return encode('iso-2022-jp', $str);
}
sub encode_from_to {
my $str = shift;
$str = encode('utf8', $str);
Encode::from_to($str, 'utf8' => 'iso-2022-jp');
return $str;
}
結果はこちら
SV = PV(0x8151b00) at 0x815160c
REFCNT = 1
FLAGS = (PADBUSY,PADMY,POK,pPOK,UTF8)
PV = 0x81fefb0 "343201202343201202343201202343201204343201206343201210343201212"� [UTF8 "x{3042}x{3042}x{3042}x{3044}x{3046}x{3048}x{304a}"]
CUR = 21
LEN = 24
SV = PVMG(0x81e1fc8) at 0x8230ca0
REFCNT = 1
FLAGS = (TEMP,POK,pPOK)
IV = 0
NV = 0
PV = 0x8236630 "33$B$\"$\"$\"$$$&$($*33(B"�
CUR = 20
LEN = 24
SV = PVMG(0x81e2028) at 0x8230ca0
REFCNT = 1
FLAGS = (TEMP,POK,pPOK)
IV = 0
NV = 0
PV = 0x8236630 "33$B$\"$\"$\"$$$&$($*33(B"�
CUR = 20
LEN = 24
ま、まったくおなじものですねー。
- Comments: 2
- Trackbacks: 0
ex_autocmd.jsにCurrentPageLoad追加とTabLeaveの修正
- 2008-05-21 (水)
- coderepos | javascript | vimperator
先日行ったautoIgnoreKeyのDOMContentLoadedの挙動修正ですがはてぶのほうで「ex_autocmd.jsにも適用できると夢が広がりそうだ」といわれていたのでやってみました。
とはいっても
autocmd PageLoad http://reader.livedoor.com/reader.* js liberator.modes.passAllKeys=true; autocmd TabSelect http://reader.livedoor.com/reader.* js liberator.modes.passAllKeys=true; autocmd TabLeave http://reader.livedoor.com/reader.* js liberator.modes.passAllKeys=false;
みたいに書いてた人は同様の問題はおこってなかったはず。PageLoad時の動作がldr限定なので。ただし逆にldrをバックグラウンドで開くと関係ないページでpassAllKeysがtrueになって困るということはあったはず。
あと、TabLeaveが
* セッションからのタブ復活をした直後のタブ変更(セッションからの復活ではTabSelectはおこらず。)
* タブの削除(recentTabオブジェクトが破棄されてしまうため)
のときに元のURLが拾えずに正常に動作していなかった様子。
というわけでCurrentPageLoadの追加とTabLeaveの修正をコミットしました。
autocmd CurrentPageLoad http://reader.livedoor.com/reader.* js liberator.modes.passAllKeys=true; autocmd TabSelect http://reader.livedoor.com/reader.* js liberator.modes.passAllKeys=true; autocmd TabLeave http://reader.livedoor.com/reader.* js liberator.modes.passAllKeys=false;
こんな風にかくと幸せになれるです。
- Comments: 0
- Trackbacks: 0
autoIgnoreKeyのDOMContentLoadedの挙動修正
- 2008-05-16 (金)
- coderepos | javascript | vimperator
こんにちはこんにちは。昨日今日といろんな大人の事情でYAPC::Asiaにいけてません><仕事よりYAPCのほうが大切だって気持ちはあるんですが・・・。うぅ・・無念です。
で、全然関係ありませんがちょっと前からFirefox+Vimperatorを活用してます。そこでLDRとかを見るときにvimキーバインドを自動で無効にしてくれる便利ぷらぎんのautoIgnoreKeyを使っていたのですが、LDRでvでフィードを開いてすぐLDRのタブに戻ってきたりするとその後DOMContentLoadedイベントが起こってLDRタブを開いてるのにもかかわらずvimキー有効になってしまっていました。
なので常に今開いているタブのURLを元に判断するように修正してコミットしましたー。これだとこういう状況でダメなんだよ!という方いらっしゃいましたら教えてください。
- Comments: 0
- Trackbacks: 0
Home > Archives > 2008-05
- Search
- Feeds
- Meta