This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldoc under OS/2
[perl5.git] / t / op / substr.t
CommitLineData
a687059c
LW
1#!./perl
2
79072805 3# $RCSfile: substr.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:31 $
a687059c 4
08cb0b0d 5print "1..25\n";
a687059c
LW
6
7$a = 'abcdefxyz';
8
9print (substr($a,0,3) eq 'abc' ? "ok 1\n" : "not ok 1\n");
10print (substr($a,3,3) eq 'def' ? "ok 2\n" : "not ok 2\n");
11print (substr($a,6,999) eq 'xyz' ? "ok 3\n" : "not ok 3\n");
12print (substr($a,999,999) eq '' ? "ok 4\n" : "not ok 4\n");
a0d0e21e 13print (substr($a,0,-6) eq 'abc' ? "ok 5\n" : "not ok 5\n");
a687059c
LW
14print (substr($a,-3,1) eq 'x' ? "ok 6\n" : "not ok 6\n");
15
16$[ = 1;
17
18print (substr($a,1,3) eq 'abc' ? "ok 7\n" : "not ok 7\n");
19print (substr($a,4,3) eq 'def' ? "ok 8\n" : "not ok 8\n");
20print (substr($a,7,999) eq 'xyz' ? "ok 9\n" : "not ok 9\n");
21print (substr($a,999,999) eq '' ? "ok 10\n" : "not ok 10\n");
a0d0e21e 22print (substr($a,1,-6) eq 'abc' ? "ok 11\n" : "not ok 11\n");
a687059c
LW
23print (substr($a,-3,1) eq 'x' ? "ok 12\n" : "not ok 12\n");
24
25$[ = 0;
26
27substr($a,3,3) = 'XYZ';
28print $a eq 'abcXYZxyz' ? "ok 13\n" : "not ok 13\n";
29substr($a,0,2) = '';
30print $a eq 'cXYZxyz' ? "ok 14\n" : "not ok 14\n";
31y/a/a/;
32substr($a,0,0) = 'ab';
33print $a eq 'abcXYZxyz' ? "ok 15\n" : "not ok 15 $a\n";
34substr($a,0,0) = '12345678';
35print $a eq '12345678abcXYZxyz' ? "ok 16\n" : "not ok 16\n";
36substr($a,-3,3) = 'def';
37print $a eq '12345678abcXYZdef' ? "ok 17\n" : "not ok 17\n";
38substr($a,-3,3) = '<';
39print $a eq '12345678abcXYZ<' ? "ok 18\n" : "not ok 18\n";
40substr($a,-1,1) = '12345678';
41print $a eq '12345678abcXYZ12345678' ? "ok 19\n" : "not ok 19\n";
42
d9d8d8de
LW
43$a = 'abcdefxyz';
44
45print (substr($a,6) eq 'xyz' ? "ok 20\n" : "not ok 20\n");
46print (substr($a,-3) eq 'xyz' ? "ok 21\n" : "not ok 21\n");
47print (substr($a,999) eq '' ? "ok 22\n" : "not ok 22\n");
08cb0b0d
PP
48
49# with lexicals (and in re-entered scopes)
50for (0,1) {
51 my $txt;
52 unless ($_) {
53 $txt = "Foo";
54 substr($txt, -1) = "X";
55 print $txt eq "FoX" ? "ok 23\n" : "not ok 23\n";
56 }
57 else {
58 substr($txt, 0, 1) = "X";
59 print $txt eq "X" ? "ok 24\n" : "not ok 24\n";
60 }
61}
62
63# coersion of references
64{
65 my $s = [];
66 substr($s, 0, 1) = 'Foo';
67 print substr($s,0,7) eq "FooRRAY" ? "ok 25\n" : "not ok 25\n";
68}