From: nobu@... Date: 2017-07-10T07:41:53+00:00 Subject: [ruby-core:81990] [Ruby trunk Bug#13736] ruby -00 should be the same as setting $/="" Issue #13736 has been updated by nobu (Nobuyoshi Nakada). ```diff diff --git i/ruby.c w/ruby.c index b2b2c690ff..4497331d48 100644 --- i/ruby.c +++ w/ruby.c @@ -1162,7 +1162,7 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt) if (v > 0377) rb_rs = Qnil; else if (v == 0 && numlen >= 2) { - rb_rs = rb_str_new2("\n\n"); + rb_rs = rb_str_new2(""); } else { c = v & 0xff; diff --git i/test/ruby/test_rubyoptions.rb w/test/ruby/test_rubyoptions.rb index 93eecd28c4..a2e2a99e19 100644 --- i/test/ruby/test_rubyoptions.rb +++ w/test/ruby/test_rubyoptions.rb @@ -187,6 +187,8 @@ assert_in_out_err(%w(-0e) + ["print gets"], "foo\nbar\0baz", %W(foo bar\0), []) assert_in_out_err(%w(-00 -e) + ["p gets, gets"], "foo\nbar\n\nbaz\nzot\n\n\n", %w("foo\nbar\n\n" "baz\nzot\n\n"), []) + + assert_in_out_err(%w(-00 -e) + ["p gets, gets"], "foo\nbar\n\n\n\nbaz\n", %w("foo\nbar\n\n" "baz\n"), []) end def test_autosplit ``` ---------------------------------------- Bug #13736: ruby -00 should be the same as setting $/="" https://bugs.ruby-lang.org/issues/13736#change-65721 * Author: dawg (Andrew Dumke) * Status: Assigned * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) * Target version: * ruby -v: 2.4.1p111 * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- Suppose you have blocks of text separated by 2 or more \n. A typical text file with records defined by a black line. Given: ``` $ cat lines f1, r1 f2, r1 then 2 \n: f1, r2 then 3 \n: f1,r3 f2,r3 then 4 \n: f1, r4 f2,r4 then 6 \n: f1,r5 ``` The script `$ ruby -00 -F"\n" -lane 'END{p $.}' lines` SHOULD have the same number of records as `$ ruby -F"\n" -lane 'BEGIN{$/=""}; END{p $.}' lines`. It does not not. The script `$ ruby -00 -F"\n" -lane 'END{p $.}' lines` SHOULD have the same number of record as `$ perl -00 -F"\n" -lane 'END{print $.}' lines` Again, it does not. The script `$ ruby -00 -F"\n" -lane 'END{p $.}' lines` shows 8. The other scripts here show 5 -- the correct number. The behavior of the `-00` command switch is not the same as perl's `-00` command switch. It is also not the same as setting `$/=""` in either ruby or perl. The `\n\n` pattern between blocks should be a single record separator even if you have `\n\n\n\n\n` That is true in perl, awk, gawk, and ruby with `$/=""`. It is not true with `ruby -00`. This is a bug. ---Files-------------------------------- ruby_bug.sh (1.39 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: