[ruby-core:82938] [Ruby trunk Bug#13736][Feedback] ruby -00 should be the same as setting $/=""

From: jetabd@...
Date: 2017-09-22 17:14:10 UTC
List: ruby-core #82938
Issue #13736 has been updated by dawg (Andrew Dumke).

Status changed from Closed to Feedback

Try:

      $ printf "1\n1b\n\n\n\n\n2\n2b\n\n3\3b" | ruby -00 -F"\n" -lane 'END{p $.}'
     4

vs

     $ printf "1\n1b\n\n\n\n\n2\n2b\n\n3\3b" | ruby -F"\n" -lane 'BEGIN{$/=""}; END{p $.}'
     3

vs 

     $ printf "1\n1b\n\n\n\n\n2\n2b\n\n3\3b" | perl -00 -F"\n" -lane 'END{print $.}'
     3

Try with the original text from `lines.txt`

Sorry -- not fixed...

 


----------------------------------------
Bug #13736: ruby -00 should be the same as setting $/=""
https://bugs.ruby-lang.org/issues/13736#change-66842

* Author: dawg (Andrew Dumke)
* Status: Feedback
* 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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next