PerlでUNIXコマンドを実行した結果を取得するときの注意
何か知らんけど、職場の人がちょっとはまってて助けてあげたついでにメモ。
PerlでUNIXコマンドの結果を取得し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を全く知らないに近かったのです・・・無知って怖い。