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

最新文章

  1. ZOJ Problem Set - 1365 Mileage Bank
  2. Docker-compose
  3. sublime插件@sublimelinter安装使用
  4. 使用session防止重复提交
  5. Action<>和Func<> 委托【代理】
  6. SmartWiki文档在线管理系统简介
  7. 从此爱上iOS Autolayout
  8. flex4 s:Datagrid <s:typicalItem
  9. 有趣的数-回文数(Palindrome number)
  10. localtunnel.me 原理流程浅析
  11. HDU 2896 AC自动机 裸题
  12. WCF的回调使用实例代码说明
  13. UESTC_魔法少女小蟹 CDOJ 710
  14. js document
  15. 配置SESSION超时与请求超时
  16. 总结JS中string、math、array的常用的方法
  17. face detection[Face R-FCN]
  18. 【Linux】linux中文本操作利器grep,awk,sed
  19. TensorRT优化过程中的dropout问题
  20. 论参数self

热门文章

  1. Android JavascriptBridge 详解(二)
  2. 3.2、Android Studio在物理设备中运行APP
  3. Hadoop:hadoop fs、hadoop dfs与hdfs dfs命令的区别
  4. python 子包引用父包和其他子包
  5. 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)
  6. Nginx Upstream模块源码分析(上)
  7. Web Service进阶(四)WebService注解
  8. AnimatedPathView实现自定义图片标签
  9. Java-IO之总框架
  10. CUDA学习,第一个kernel函数及代码讲解