有没有办法在 Ruby 中执行以下 Perl 结构?
while( my $line = $file->each_line() ) {
if($line =~ /first_line/ .. /end_line_I_care_about/) {
do_something;
# this will do something on a line per line basis on the range of the match
}
}
在 ruby 中,它会读取如下内容:
file.each_line do |line|
if line.match(/first_line/) .. line.match(/end_line_I_care_about/)
do_something;
# this will only do it based on the first match not the range.
end
end
将整个文件读入内存不是一种选择,我不知道该范围的块有多大。
编辑:
感谢您的答案,我得到的答案与我最初的代码基本相同。我遇到的问题是“它可以测试正确的操作数并在它变为真的相同评估中变为假(如在 awk 中),但它仍然返回真一次。”
“如果您不希望它在下一次评估之前测试正确的操作数,例如在 sed 中,只需使用三个点(“...”)而不是两个。在所有其他方面,“...”的行为就像“..“ 做。”
我将正确答案标记为指示我看到“..”可以在发出的同一个呼叫中关闭的答案。
作为参考,我使用的代码是:
file.each_line do |line|
if line.match(/first_line/) ... line.match(/end_line_I_care_about/)
do_something;
end
end