本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Ruby
从文件中读取指定模式的内容并输出
从文件中读取指定模式的内容并输出可以通过正则表达式搜索数据,输出按照制定模式匹配到的内容。
例如:
1: pattern = Regexp.new(ARGV[0])
2: filename = ARGV[1]
3:
4: file = File.open(filename)
5: file.each_line do |line|
6: if pattern =~ line
7: print line
8: end
9: end
10: file.close
Ruby执行该脚本时,需要有两个命令行参数——ARGV[0] 和ARGV[1] 。第1行,程序根据第1个参数创建了正则表达式对象,并赋值给变量pattern 。Regexp.new(str) 表示把字符串str 转换为正则表达式对象。接着第2行,把第2个参数赋值给作为文件名的变量filename。
pp方法
pp 方法在输出对象的结果时,为了更容易看懂,会适当地换行以调整输出结果。建议在需要确认嵌套的内容时使用pp 方法。
全局变量的问题
由于全局变量在任何地方都可以调用,也就导致了只要全局变量的名称相同,不管变量在程序的哪个部分使用,程序都认为是它们是同一个变量。假设有个程序引用了其他程序作为自己程序的一部分。这时,即使原程序与被引用程序中都有一个相同名称的变量x ,由于x 是局部变量,因此程序也不会认为这两个变量x 是同一个变量。但是,如果是拥有相同名称的全局变量x ,则程序会认为这两个变量$x 是相同的变量。
所以,由于全局变量的值在程序的任何地方都可以修改,因此在规模较大的程序中使用时,会增加程序不必要的复杂度,给阅读程序、修改程序造成意想不到的麻烦。