[perl] コメント行の除去

コメント行を除きたい時が多々あるので、その方法をメモ。

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;


open(my $fh, '<', '/tmp/hoge') or die "$!";
my @lines = <$fh>;
close($fh) or die "$!";
@lines = map { $_ =~ s/\r//; $_ =~ s/\n//; $_ } @lines;

print "[before]\n";
print Dumper @lines;

### コメント行除去
@lines = grep { ! /^\s*\#.*/ } @lines;

print "[after]\n";
print Dumper @lines;

実行

$ cat /tmp/hoge
hoge
#huga
 #foo
        #bar
piyo

$ ./removecomment.pl
[before]
$VAR1 = 'hoge';
$VAR2 = '#huga';
$VAR3 = ' #foo';
$VAR4 = '       #bar';
$VAR5 = 'piyo';
[after]
$VAR1 = 'hoge';
$VAR2 = 'piyo';