base64みたいなコマンドを使いたい時に
目次
確認環境
Env | Ver |
---|---|
Perl | 5.34 .0 |
サンプルコード
バッククォートでコマンドを括り、後はシェルスクリプト度同じ理論で書くと行ける
# base64エンコードされた文字列
my $input = 'Kipib2xkKioKKml0YWxpYyoKfn5zdHJpa2V+fgotIGxpCiAgLSBzdAp8VEF8QkxFfAp8LS18LS0tfAp8YWF8YmJifAp8Y2N8ZGRkfAo=';
# 変数を標準出力に展開し、base64の標準入力として使い、base64コマンドの標準出力を戻り値の変数に格納している
my $output = `echo $input | base64 -d`;
print $output;
出力
**bold**
*italic*
~~strike~~
- li
- st
|TA|BLE|
|--|---|
|aa|bbb|
|cc|ddd|
ダメだったコード
その1
# 標準ライブラリからopen2を取得
use IPC::Open2 qw/open2/;
my $pid = open2 *READ, *WRITE, 'base64 -d';
# base64エンコードされた文字列
print WRITE 'Kipib2xkKioKKml0YWxpYyoKfn5zdHJpa2V+fgotIGxpCiAgLSBzdAp8VEF8QkxFfAp8LS18LS0tfAp8YWF8YmJifAp8Y2N8ZGRkfAo=';
close WRITE;
my $output = <READ>;
close $READ;
waitpid $pid, 0;
print $output;
出力
何故か一行目しか出ない
**bold**
その2
# 標準ライブラリからopen2を取得
use IPC::Open2 qw/open2/;
my $pid = open2 my $reader, my $writer, 'base64 -d';
# base64エンコードされた文字列
print $writer 'Kipib2xkKioKKml0YWxpYyoKfn5zdHJpa2V+fgotIGxpCiAgLSBzdAp8VEF8QkxFfAp8LS18LS0tfAp8YWF8YmJifAp8Y2N8ZGRkfAo=';
close $writer;
my $output = <$reader>;
close $reader;
waitpid $pid, 0;
print $output;
出力
何故か一行目しか出ない
**bold**