なんと Perl6 ではホームディレクトリを表すチルダを変換してくれない
嘘だろ?! って思ったんだけど、ほんとっぽい。
~/.bashrc
を /home/alice/.bashrc
って変換してくれるようなバンドルされてるメソッドとか関数がないって意味ね。
# -*- mode: per6; -*- # \file: 00-childa.t use v6; use Test; plan 2; is $*HOME.add( '.bashrc' ).Str, '~/.bashrc'.IO.absolute, '.absolute でチルダを変換できるだろ、常識的に考えて……'; is $*HOME.add( '.bashrc' ).Str, '~/.bashrc'.IO.resolve , '.resolve でチルダを変換できるだろ、常識的に考えて……'; done-testing;
これを実行してみると:
% perl6 ./00-childa.t
1..2
not ok 1 - .absolute でチルダを変換できるだろ、常識的に考えて……
# Failed test '.absolute でチルダを変換できるだろ、常識的に考えて……'
# at ./00-childa.t line 8
# expected: '/home/rihine/workspace/p6-midi-converter-demo/~/.bashrc'
# got: '/home/rihine/.bashrc'
not ok 2 - .resolve でチルダを変換できるだろ、常識的に考えて……
# Failed test '.resolve でチルダを変換できるだろ、常識的に考えて……'
# at ./00-childa.t line 9
# expected: '/home/rihine/workspace/p6-midi-converter-demo/~/.bashrc'
# got: '/home/rihine/.bashrc'
# Looks like you failed 2 tests of 2
グワーーーーーーーーーーーーーーーーーーー!!!!!!
ちょー簡単な &expand-filepath
はこんな感じかもだ:
sub expand-filepath($filepath) { $filepath.subst( '~', $*HOME.Str ) }
.subst
とかで変換できるんだし、無くてよくね?って感じなのかもしれない。