Commit | Line | Data |
---|---|---|
79628082 SM |
1 | #!./perl |
2 | ||
3 | BEGIN { | |
4 | chdir 't'; | |
5 | @INC = '../lib'; | |
6 | require './test.pl'; | |
7 | } | |
8 | ||
2d726892 | 9 | plan tests => 13; |
79628082 SM |
10 | |
11 | eval { for (\2) { $_ = <FH> } }; | |
12 | like($@, 'Modification of a read-only value attempted', '[perl #19566]'); | |
13 | ||
ba92458f AE |
14 | { |
15 | open A,"+>a"; $a = 3; | |
16 | is($a .= <A>, 3, '#21628 - $a .= <A> , A eof'); | |
17 | close A; $a = 4; | |
18 | is($a .= <A>, 4, '#21628 - $a .= <A> , A closed'); | |
19 | unlink "a"; | |
20 | } | |
10bcdfd6 NC |
21 | |
22 | # 82 is chosen to exceed the length for sv_grow in do_readline (80) | |
bfe0b846 | 23 | foreach my $k (1, 82) { |
10bcdfd6 | 24 | my $result |
048e6480 | 25 | = runperl (stdin => '', stderr => 1, |
bfe0b846 | 26 | prog => "\$x = q(k) x $k; \$a{\$x} = qw(v); \$_ = <> foreach keys %a; print qw(end)", |
10bcdfd6 | 27 | ); |
bfe0b846 CB |
28 | $result =~ s/\n\z// if $^O eq 'VMS'; |
29 | is ($result, "end", '[perl #21614] for length ' . length('k' x $k)); | |
10bcdfd6 | 30 | } |
bc44a8a2 NC |
31 | |
32 | ||
bfe0b846 | 33 | foreach my $k (1, 21) { |
bc44a8a2 | 34 | my $result |
048e6480 | 35 | = runperl (stdin => ' rules', stderr => 1, |
bfe0b846 | 36 | prog => "\$x = q(perl) x $k; \$a{\$x} = q(v); foreach (keys %a) {\$_ .= <>; print}", |
bc44a8a2 | 37 | ); |
bfe0b846 CB |
38 | $result =~ s/\n\z// if $^O eq 'VMS'; |
39 | is ($result, ('perl' x $k) . " rules", 'rcatline to shared sv for length ' . length('perl' x $k)); | |
bc44a8a2 NC |
40 | } |
41 | ||
42 | foreach my $l (1, 82) { | |
43 | my $k = $l; | |
44 | $k = 'k' x $k; | |
45 | my $copy = $k; | |
46 | $k = <DATA>; | |
47 | is ($k, "moo\n", 'catline to COW sv for length ' . length $copy); | |
48 | } | |
49 | ||
50 | ||
51 | foreach my $l (1, 21) { | |
52 | my $k = $l; | |
53 | $k = 'perl' x $k; | |
54 | my $perl = $k; | |
55 | $k .= <DATA>; | |
56 | is ($k, "$perl rules\n", 'rcatline to COW sv for length ' . length $perl); | |
57 | } | |
2d726892 TF |
58 | |
59 | use strict; | |
60 | use File::Spec; | |
61 | ||
62 | open F, File::Spec->curdir and sysread F, $_, 1; | |
63 | my $err = $! + 0; | |
64 | close F; | |
65 | ||
66 | SKIP: { | |
389edf24 | 67 | skip "you can read directories as plain files", 2 unless( $err ); |
2d726892 TF |
68 | |
69 | $!=0; | |
70 | open F, File::Spec->curdir and $_=<F>; | |
71 | ok( $!==$err && !defined($_) => 'readline( DIRECTORY )' ); | |
72 | close F; | |
73 | ||
74 | $!=0; | |
75 | { local $/; | |
76 | open F, File::Spec->curdir and $_=<F>; | |
77 | ok( $!==$err && !defined($_) => 'readline( DIRECTORY ) slurp mode' ); | |
78 | close F; | |
79 | } | |
80 | } | |
81 | ||
bc44a8a2 NC |
82 | __DATA__ |
83 | moo | |
84 | moo | |
85 | rules | |
86 | rules |