PerlでUNIXコマンドを実行した結果を取得するときの注意

何か知らんけど、職場の人がちょっとはまってて助けてあげたついでにメモ。

PerlUNIXコマンドの結果を取得しsubstrするという処理を、その人はこんな感じでやってました。

my $user_num = substr(`whoami`,-2);
my $env_file = "/hoge/var/user".$user_num.".env";

で、$env_fileが「/hoge/var/user3.env」にならないとお困りでした。

このロジックだと$env_fileは「/hoge/var/user3」になってしまいます。Perlでwhoamiの結果を取得するとシェルスクリプトと違って、結果に改行がくっついた形でとっちゃうからです。

substrで第三引数に1を与えて、取得する文字列長を1にすればOKです。

my $user_num = substr(`whoami`,-2,1);
my $env_file = "/hoge/var/user".$user_num."/test.env";

追記

ちょw(→自分)

ていうか、それchompで。。。

この頃は本当にPerlを全く知らないに近かったのです・・・無知って怖い。