问题描述
想知道是否可以编写一个简短的脚本,最终将代码本身打印出来并计算行数。甚至一些简单的东西,比如几行
#!/usr/bin/perl
use strict;
print "Hello there";
print "This got me scratching my head";
输出将是此代码本身,并计算行数。 非常感谢。
解决方法
类似的东西?
use warnings;
use strict;
print "Hello there";
print "This got me scratching my head";
open (my $f,'<',$0);
while (<$f>){print};
print "read $. lines\n";
变量 $0
或 $PROGRAM_NAME
保存程序的名称。
或(每行行数)
use warnings;
use strict;
print "Hello there";
print "This got me scratching my head\n";
open (my $f,$0);
while (<$f>){printf "%03d %s",$.,$_};
print "read $. lines\n";
变量 $.
或 $INPUT_LINE_NUMBER
包含最后访问的文件句柄的当前行号。
另请参阅 mobs answer 以了解使用 DATA
读取文件的方法
正在执行的脚本的名称在变量 $0
中,因此完成此操作的直接方法是
...
open(my $ZERO,"<",$0);
my @lines = <$ZERO>;
close $ZERO;
print @lines,"count = ",0+@lines,"\n";
...
当 $0
由于更改目录或覆盖它而不可用时,另一种选择是使用特殊的 DATA
句柄,该句柄在包含特殊 __END__
或 { {1}} 个令牌。
__DATA__