ruby读取源代码自身的一种方法

时间:2023-03-09 15:43:16
ruby读取源代码自身的一种方法

我们知道ruby中如果源代码中一行开头(必须在行的开头)有__END__标示,则表示下面的都是数据行,可以用IO对象DATA来访问这些行.但是如果我们用DATA.rewind一下的话,就可以将文件流指向文件开头鸟,然后就可以访问源代码本身啦:

#!/usr/bin/ruby

DATA.rewind
i=1
DATA.each_line do |line|
	puts "#{'%03d' % i} #{line}"
	i+=1
end
__END__

运行结果:

wisy@wisy-ThinkPad-X61:~/src/ruby_src$ ./a.rb
001 #!/usr/bin/ruby
002
003 DATA.rewind
004 i=1
005 DATA.each_line do |line|
006 	puts "#{'%03d' % i} #{line}"
007 	i+=1
008 end
009 __END__

喜欢C语言的童鞋可以用C重写下ruby读取源代码自身的一种方法