cat config.ini | grep -v "^#" | grep -v "^$"
は書き方が悪い
grep -v "^[#$]" config.ini
文字列を生成するには
grep -v "^[#$]" config.ini
文字列リテラルを使用できます
'grep -v "^[#$]" config.ini'
そう
system('grep -v "^[#$]" config.ini');
die("Killed by signal ".($? & 0x7F)."\n") if $? & 0x7F;
die("Exited with error ".($? >> 8)."\n") if $? >> 8;
system('grep -v "^[#$]" config.ini');
の略です
system('/bin/sh', '-c', 'grep -v "^[#$]" config.ini');
ただし、シェルは必要ないため、代わりに次を使用できます。
system('grep', '-v', '^[#$]', 'config.ini');
die("Killed by signal ".($? & 0x7F)."\n") if $? & 0x7F;
die("Exited with error ".($? >> 8)."\n") if $? >> 8;
しかし、Perl で実行した方がクリーンで堅牢です。
open(my $fh, '<', 'config.ini')
or die($!);
while (<$fh>) {
print if !/^[#$]/;
}