日向夏特殊応援部隊

俺様向けメモ

URI モジュールの小ネタ

って事なので、自分も及ばずながら参加してみます。

で、最近たまに忘れたりする URI モジュールの小ネタ。

相対パスの解決

new_abs() で簡単に作れます。

use strict;
use warnings;
use feature qw(say);

use URI;

my $uri = URI->new_abs('../../css/import.css', 'http://example.com/foo/bar/index.html');
say $uri; ## http://example.com/css/import.css

あるいは、

use strict;
use warnings;
use feature qw(say);

use URI;

my $uri = URI->new('../../css/import.css', 'http');
say $uri->abs("http://example.com/foo/bar/index.html"); ## http://example.com/css/import.css

URI::mailto

たまーに、mailto プロトコル使ってる例もあるんですよね。
あれって subject やら body のテンプレ書けるんですけど、その部分は

use strict;
use warnings;
use feature qw(say);

use URI;
use Data::Dumper;

my $mailto = URI->new(q|mailto:info@example.com?subject=%E4%BB%B6%E5%90%8D&body=%E6%9C%AC%E6%96%87|);

say $mailto->to;
say Dumper(+{ $mailto->headers });

とかやると、

info@example.com
$VAR1 = {
          'body' => '本文',
          'to' => 'info@example.com',
          'subject' => '件名'
        };

まとめ

小ネタ過ぎてすみません><