--- /dev/null
+1..38
+
+1: OPEN: open a scalar on a ref to a string
+1: ok 1
+
+2: PRINT: able to print to A diner while dining at Crewe
+2: Found a rather large mouse in his stew
+2: Said the waiter, "Don't shout,
+2: And wave it about...
+2: ok 2
+
+3: FULL
+3: S: "A diner while dining at Crewe\nFound a rather large mouse in his stew\n Said the waiter, \22Don't shout,\n And wave it about...\nor the rest will be wanting one too.\22\n"
+3: F: "A diner while dining at Crewe\nFound a rather large mouse in his stew\n Said the waiter, \22Don't shout,\n And wave it about...\nor the rest will be wanting one too.\22\n"
+3: ok 3
+
+4: GETC: seek(0,0) and getc()
+4: ok 4
+
+5: GETLINE/SEEK3: seek(3,START) and getline() gets part of 1st line
+5: GH: "A diner while dining at Crewe\nFound a rather large mouse in his stew\n Said the waiter, \22Don't shout,\n And wave it about...\nor the rest will be wanting one too.\22\n"
+5: Got: "iner while dining at Crewe\n"
+5: Want: "iner while dining at Crewe\n"
+5: ok 5
+
+6: GETLINE/NEXT: next getline() gets subsequent line
+6: Got: "Found a rather large mouse in his stew\n"
+6: ok 6
+
+7: GETLINE/EOF: repeated getline() finds end of stream
+7: Last: "undef"
+7: ok 7
+
+8: GETLINE/GETLINES: seek(0,0) and getlines() slurps in string
+8: GotAll: "A diner while dining at Crewe\nFound a rather large mouse in his stew\n Said the waiter, \22Don't shout,\n And wave it about...\nor the rest will be wanting one too.\22\n"
+8: WantAll: "A diner while dining at Crewe\nFound a rather large mouse in his stew\n Said the waiter, \22Don't shout,\n And wave it about...\nor the rest will be wanting one too.\22\n"
+8: Got: "A diner while dining at Crewe\n"
+8: Got: "Found a rather large mouse in his stew\n"
+8: Got: " Said the waiter, \22Don't shout,\n"
+8: Got: " And wave it about...\n"
+8: Got: "or the rest will be wanting one too.\22\n"
+8: ok 8
+
+9: READ/FIRST10: reading first 10 bytes with seek(0,START) + read(10)
+9: ok 9
+
+10: READ/NEXT10: reading next 10 bytes with read(10)
+10: ok 10
+
+11: READ/TELL20: tell() the current location as 20
+11: ok 11
+
+12: READ/SLURP: seek(0,START) + read(1000) reads in whole handle
+12: ok 12
+
+13: SEEK/SET: seek(2,SET) + read(5) returns 'diner'
+13: A: "diner"
+13: B: "diner"
+13: ok 13
+
+14: SEEK/END: seek(-6,END) + read(3) returns 'too'
+14: A: "too"
+14: B: "too"
+14: ok 14
+
+15: SEEK/CUR: seek(-7,CUR) + read(7) returns 'one too'
+15: A: "one too"
+15: B: "one too"
+15: ok 15
+
+16: TIE/TIE: able to tie
+16: TieClass: "IO::Scalar"
+16: ok 16
+
+17: TIE/PRINT: printing data
+17: ok 17
+
+18: TIE/GETLINE: seek(0,0) and scalar <> get expected lines
+18: Want: "A diner while dining at Crewe\n"
+18: Want: "Found a rather large mouse in his stew\n"
+18: Want: " Said the waiter, \22Don't shout,\n"
+18: Want: " And wave it about...\n"
+18: Want: "or the rest will be wanting one too.\22\n"
+18: Gotl: "A diner while dining at Crewe\n"
+18: Gotl: "Found a rather large mouse in his stew\n"
+18: Gotl: " Said the waiter, \22Don't shout,\n"
+18: Gotl: " And wave it about...\n"
+18: Gotl: "or the rest will be wanting one too.\22\n"
+18: Lines: "0..4"
+18: Match: "5"
+18: FDatl: "5"
+18: FData: "A diner while dining at Crewe\n"
+18: FData: "Found a rather large mouse in his stew\n"
+18: FData: " Said the waiter, \22Don't shout,\n"
+18: FData: " And wave it about...\n"
+18: FData: "or the rest will be wanting one too.\22\n"
+18: ok 18
+
+19: TIE/GETLINES: seek(0,0) and array <> slurps in lines
+19: Want: "A diner while dining at Crewe\n"
+19: Want: "Found a rather large mouse in his stew\n"
+19: Want: " Said the waiter, \22Don't shout,\n"
+19: Want: " And wave it about...\n"
+19: Want: "or the rest will be wanting one too.\22\n"
+19: Gotl: "A diner while dining at Crewe\n"
+19: Gotl: "Found a rather large mouse in his stew\n"
+19: Gotl: " Said the waiter, \22Don't shout,\n"
+19: Gotl: " And wave it about...\n"
+19: Gotl: "or the rest will be wanting one too.\22\n"
+19: Lines: "0..4"
+19: Match: "5"
+19: ok 19
+
+20: RECORDSEP undef: getline slurps everything
+20: A: "par 1, line 1\npar 1, line 2\n\n\n\n\npar 2, line 1\n\npar 3, line 1\npar 3, line 2\npar 3, line 3"
+20: B: "par 1, line 1\npar 1, line 2\n\n\n\n\npar 2, line 1\n\npar 3, line 1\npar 3, line 2\npar 3, line 3"
+20: ok 20
+
+21: RECORDSEP undef: get first line
+21: A: "par 1, line 1\n"
+21: B: "par 1, line 1\n"
+21: ok 21
+
+22: RECORDSEP undef: slurp the rest
+22: A: "par 1, line 2\n\n\n\n\npar 2, line 1\n\npar 3, line 1\npar 3, line 2\npar 3, line 3"
+22: B: "par 1, line 2\n\n\n\n\npar 2, line 1\n\npar 3, line 1\npar 3, line 2\npar 3, line 3"
+22: ok 22
+
+23: RECORDSEP empty: first par
+23: A: "par 1, line 1\npar 1, line 2\n\n"
+23: B: "par 1, line 1\npar 1, line 2\n\n"
+23: ok 23
+
+24: RECORDSEP empty: second par
+24: A: "par 2, line 1\n\n"
+24: B: "par 2, line 1\n\n"
+24: ok 24
+
+25: RECORDSEP empty: third par
+25: A: "par 3, line 1\npar 3, line 2\npar 3, line 3"
+25: B: "par 3, line 1\npar 3, line 2\npar 3, line 3"
+25: ok 25
+
+26: RECORDSEP custom: first rec
+26: A: "par 1,"
+26: B: "par 1,"
+26: ok 26
+
+27: RECORDSEP custom: second rec
+27: A: " line 1\npar 1,"
+27: B: " line 1\npar 1,"
+27: ok 27
+
+28: RECORDSEP newline: rec 0
+28: A: "par 1, line 1\n"
+28: B: "par 1, line 1\n"
+28: ok 28
+
+29: RECORDSEP newline: rec 1
+29: A: "par 1, line 2\n"
+29: B: "par 1, line 2\n"
+29: ok 29
+
+30: RECORDSEP newline: rec 2
+30: A: "\n"
+30: B: "\n"
+30: ok 30
+
+31: RECORDSEP newline: rec 3
+31: A: "\n"
+31: B: "\n"
+31: ok 31
+
+32: RECORDSEP newline: rec 4
+32: A: "\n"
+32: B: "\n"
+32: ok 32
+
+33: RECORDSEP newline: rec 5
+33: A: "\n"
+33: B: "\n"
+33: ok 33
+
+34: RECORDSEP newline: rec 6
+34: A: "par 2, line 1\n"
+34: B: "par 2, line 1\n"
+34: ok 34
+
+35: RECORDSEP newline: rec 7
+35: A: "\n"
+35: B: "\n"
+35: ok 35
+
+36: RECORDSEP newline: rec 8
+36: A: "par 3, line 1\n"
+36: B: "par 3, line 1\n"
+36: ok 36
+
+37: RECORDSEP newline: rec 9
+37: A: "par 3, line 2\n"
+37: B: "par 3, line 2\n"
+37: ok 37
+
+38: RECORDSEP newline: rec 10
+38: A: "par 3, line 3"
+38: B: "par 3, line 3"
+38: ok 38
+
+# END