我们知道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重写下