challenge 条件を満たす行を取り除く

ファイルから1行ずつ読み込み、"#"で始まる行だけを取り除いてファイルに出力するコードを書いてください。

サンプル入力

hello!
# remove this
 # don't remove this
bye!
サンプル出力
hello!
 # don't remove this
bye!

Posted feedbacks - Perl

1
print grep!/^#/,<>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
my $tmp = <<"EOM";
hello!
# remove this
 # don't remove this
bye!
EOM

open(OUT,">output");

for(grep {!/^#/} split /\n/,$tmp){
	print OUT "$_\n"
}
close(OUT);

Perl です。ちょっとひねくれてますけど、一応、問題の条件を満たしています。行の"処理"は1行ずつではありませんが、読み込みは、与えられた条件どおり、1行ずつです。読み込みの仕方についての条件がなくなれば、もっと効率的にできますよね。。。。
1
2
3
while (<>) {$buffer .= $_ } ;
$buffer =~ s/([\A\n])#[^\n]*[\n\Z]/$1/g ;
print $buffer ;

Index

Feed

Other

Link

Pathtraq

loading...