ef83756c58587726d3e65fdbf28cf5687cfba12e
[perl.git] / t / lib / warnings / op
1   op.c          AOK
2
3      Found = in conditional, should be ==
4         1 if $a = 1 ;
5
6      Useless use of time in void context
7      Useless use of a variable in void context
8      Useless use of a constant in void context
9         time ;
10         $a ;
11         "abc"
12
13      Useless use of sort in scalar context
14         my $x = sort (2,1,3);
15
16      Applying %s to %s will act on scalar(%s)
17         my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ;
18         @a =~ /abc/ ;
19         @a =~ s/a/b/ ;
20         @a =~ tr/a/b/ ;
21         @$b =~ /abc/ ;
22         @$b =~ s/a/b/ ;
23         @$b =~ tr/a/b/ ;
24         %a =~ /abc/ ;
25         %a =~ s/a/b/ ;
26         %a =~ tr/a/b/ ;
27         %$c =~ /abc/ ;
28         %$c =~ s/a/b/ ;
29         %$c =~ tr/a/b/ ;
30
31
32      Parentheses missing around "my" list at -e line 1.
33        my $a, $b = (1,2);
34  
35      Parentheses missing around "local" list at -e line 1.
36        local $a, $b = (1,2);
37  
38      Bareword found in conditional at -e line 1.
39        use warnings 'bareword'; my $x = print(ABC || 1);
40  
41      Value of %s may be \"0\"; use \"defined\" 
42         $x = 1 if $x = <FH> ;
43         $x = 1 while $x = <FH> ;
44
45      Subroutine fred redefined at -e line 1.
46        sub fred{1;} sub fred{1;}
47  
48      Constant subroutine %s redefined 
49         sub fred() {1;} sub fred() {1;}
50  
51      Format FRED redefined at /tmp/x line 5.
52        format FRED =
53        .
54        format FRED =
55        .
56  
57      Array @%s missing the @ in argument %d of %s() 
58         push fred ;
59  
60      Hash %%%s missing the %% in argument %d of %s() 
61         keys joe ;
62  
63      Statement unlikely to be reached
64         (Maybe you meant system() when you said exec()?
65         exec "true" ; my $a
66
67      defined(@array) is deprecated
68         (Maybe you should just omit the defined()?)
69         my @a ; defined @a ;
70         defined (@a = (1,2,3)) ;
71
72      defined(%hash) is deprecated
73         (Maybe you should just omit the defined()?)
74         my %h ; defined %h ;
75
76      $[ used in comparison (did you mean $] ?)
77
78      length() used on @array (did you mean "scalar(@array)"?)
79      length() used on %hash (did you mean "scalar(keys %hash)"?)
80
81      /---/ should probably be written as "---"
82         join(/---/, @foo);
83
84     %s() called too early to check prototype            [Perl_peep]
85         fred() ; sub fred ($$) {}
86
87
88     Package '%s' not found (did you use the incorrect case?)
89
90     Use of /g modifier is meaningless in split
91
92     Possible precedence problem on bitwise %c operator  [Perl_ck_bitop]
93
94     Mandatory Warnings 
95     ------------------
96     Prototype mismatch:         [cv_ckproto]
97         sub fred() ;
98         sub fred($) {}
99
100     oops: oopsAV                [oopsAV]        TODO
101     oops: oopsHV                [oopsHV]        TODO
102     
103 __END__
104 # op.c
105 use warnings 'syntax' ;
106 1 if $a = 1 ;
107 no warnings 'syntax' ;
108 1 if $a = 1 ;
109 EXPECT
110 Found = in conditional, should be == at - line 3.
111 ########
112 # op.c
113 use warnings 'syntax' ;
114 use constant foo => 1;
115 1 if $a = foo ;
116 no warnings 'syntax' ;
117 1 if $a = foo ;
118 EXPECT
119 ########
120 # op.c
121 my (@foo, %foo);
122 %main::foo->{"bar"};
123 %foo->{"bar"};
124 @main::foo->[23];
125 @foo->[23];
126 $main::foo = {}; %$main::foo->{"bar"};
127 $foo = {}; %$foo->{"bar"};
128 $main::foo = []; @$main::foo->[34];
129 $foo = []; @$foo->[34];
130 no warnings 'deprecated';
131 %main::foo->{"bar"};
132 %foo->{"bar"};
133 @main::foo->[23];
134 @foo->[23];
135 $main::foo = {}; %$main::foo->{"bar"};
136 $foo = {}; %$foo->{"bar"};
137 $main::foo = []; @$main::foo->[34];
138 $foo = []; @$foo->[34];
139 EXPECT
140 Using a hash as a reference is deprecated at - line 3.
141 Using a hash as a reference is deprecated at - line 4.
142 Using an array as a reference is deprecated at - line 5.
143 Using an array as a reference is deprecated at - line 6.
144 Using a hash as a reference is deprecated at - line 7.
145 Using a hash as a reference is deprecated at - line 8.
146 Using an array as a reference is deprecated at - line 9.
147 Using an array as a reference is deprecated at - line 10.
148 ########
149 # op.c
150 use warnings 'void' ; close STDIN ;
151 #line 2
152 1 x 3 ;                 # OP_REPEAT (folded)
153 (1) x 3 ;               # OP_REPEAT
154                         # OP_GVSV
155 wantarray ;             # OP_WANTARRAY
156                         # OP_GV
157                         # OP_PADSV
158                         # OP_PADAV
159                         # OP_PADHV
160                         # OP_PADANY
161                         # OP_AV2ARYLEN
162 ref ;                   # OP_REF
163 \@a ;                   # OP_REFGEN
164 \$a ;                   # OP_SREFGEN
165 defined $a ;            # OP_DEFINED
166 hex $a ;                # OP_HEX
167 oct $a ;                # OP_OCT
168 length $a ;             # OP_LENGTH
169 substr $a,1 ;           # OP_SUBSTR
170 vec $a,1,2 ;            # OP_VEC
171 index $a,1,2 ;          # OP_INDEX
172 rindex $a,1,2 ;         # OP_RINDEX
173 sprintf $a ;            # OP_SPRINTF
174 $a[0] ;                 # OP_AELEM
175                         # OP_AELEMFAST
176 @a[0] ;                 # OP_ASLICE
177 #values %a ;            # OP_VALUES
178 #keys %a ;              # OP_KEYS
179 $a{0} ;                 # OP_HELEM
180 @a{0} ;                 # OP_HSLICE
181 unpack "a", "a" ;       # OP_UNPACK
182 pack $a,"" ;            # OP_PACK
183 join "" ;               # OP_JOIN
184 (@a)[0,1] ;             # OP_LSLICE
185                         # OP_ANONLIST
186                         # OP_ANONHASH
187 sort(1,2) ;             # OP_SORT
188 reverse(1,2) ;          # OP_REVERSE
189                         # OP_RANGE
190                         # OP_FLIP
191 (1 ..2) ;               # OP_FLOP
192 caller ;                # OP_CALLER
193 fileno STDIN ;          # OP_FILENO
194 eof STDIN ;             # OP_EOF
195 tell STDIN ;            # OP_TELL
196 readlink 1;             # OP_READLINK
197 time ;                  # OP_TIME
198 localtime ;             # OP_LOCALTIME
199 gmtime ;                # OP_GMTIME
200 eval { getgrnam 1 };    # OP_GGRNAM
201 eval { getgrgid 1 };    # OP_GGRGID
202 eval { getpwnam 1 };    # OP_GPWNAM
203 eval { getpwuid 1 };    # OP_GPWUID
204 prototype "foo";        # OP_PROTOTYPE
205 $a ~~ $b;               # OP_SMARTMATCH
206 $a <=> $b;              # OP_NCMP
207 use 5.015;
208 __SUB__                 # OP_RUNCV
209 EXPECT
210 Useless use of a constant ("111") in void context at - line 2.
211 Useless use of repeat (x) in void context at - line 3.
212 Useless use of wantarray in void context at - line 5.
213 Useless use of reference-type operator in void context at - line 12.
214 Useless use of reference constructor in void context at - line 13.
215 Useless use of single ref constructor in void context at - line 14.
216 Useless use of defined operator in void context at - line 15.
217 Useless use of hex in void context at - line 16.
218 Useless use of oct in void context at - line 17.
219 Useless use of length in void context at - line 18.
220 Useless use of substr in void context at - line 19.
221 Useless use of vec in void context at - line 20.
222 Useless use of index in void context at - line 21.
223 Useless use of rindex in void context at - line 22.
224 Useless use of sprintf in void context at - line 23.
225 Useless use of array element in void context at - line 24.
226 Useless use of array slice in void context at - line 26.
227 Useless use of hash element in void context at - line 29.
228 Useless use of hash slice in void context at - line 30.
229 Useless use of unpack in void context at - line 31.
230 Useless use of pack in void context at - line 32.
231 Useless use of join or string in void context at - line 33.
232 Useless use of list slice in void context at - line 34.
233 Useless use of sort in void context at - line 37.
234 Useless use of reverse in void context at - line 38.
235 Useless use of range (or flop) in void context at - line 41.
236 Useless use of caller in void context at - line 42.
237 Useless use of fileno in void context at - line 43.
238 Useless use of eof in void context at - line 44.
239 Useless use of tell in void context at - line 45.
240 Useless use of readlink in void context at - line 46.
241 Useless use of time in void context at - line 47.
242 Useless use of localtime in void context at - line 48.
243 Useless use of gmtime in void context at - line 49.
244 Useless use of getgrnam in void context at - line 50.
245 Useless use of getgrgid in void context at - line 51.
246 Useless use of getpwnam in void context at - line 52.
247 Useless use of getpwuid in void context at - line 53.
248 Useless use of subroutine prototype in void context at - line 54.
249 Useless use of smart match in void context at - line 55.
250 Useless use of numeric comparison (<=>) in void context at - line 56.
251 Useless use of __SUB__ in void context at - line 58.
252 ########
253 # op.c
254 use warnings 'void' ; close STDIN ;
255 my $x = sort (2,1,3);
256 no warnings 'void' ;
257 $x = sort (2,1,3);
258 EXPECT
259 Useless use of sort in scalar context at - line 3.
260 ########
261 # op.c
262 no warnings 'void' ; close STDIN ;
263 1 x 3 ;                 # OP_REPEAT
264                         # OP_GVSV
265 wantarray ;             # OP_WANTARRAY
266                         # OP_GV
267                         # OP_PADSV
268                         # OP_PADAV
269                         # OP_PADHV
270                         # OP_PADANY
271                         # OP_AV2ARYLEN
272 ref ;                   # OP_REF
273 \@a ;                   # OP_REFGEN
274 \$a ;                   # OP_SREFGEN
275 defined $a ;            # OP_DEFINED
276 hex $a ;                # OP_HEX
277 oct $a ;                # OP_OCT
278 length $a ;             # OP_LENGTH
279 substr $a,1 ;           # OP_SUBSTR
280 vec $a,1,2 ;            # OP_VEC
281 index $a,1,2 ;          # OP_INDEX
282 rindex $a,1,2 ;         # OP_RINDEX
283 sprintf $a ;            # OP_SPRINTF
284 $a[0] ;                 # OP_AELEM
285                         # OP_AELEMFAST
286 @a[0] ;                 # OP_ASLICE
287 #values %a ;            # OP_VALUES
288 #keys %a ;              # OP_KEYS
289 $a{0} ;                 # OP_HELEM
290 @a{0} ;                 # OP_HSLICE
291 unpack "a", "a" ;       # OP_UNPACK
292 pack $a,"" ;            # OP_PACK
293 join "" ;               # OP_JOIN
294 (@a)[0,1] ;             # OP_LSLICE
295                         # OP_ANONLIST
296                         # OP_ANONHASH
297 sort(1,2) ;             # OP_SORT
298 reverse(1,2) ;          # OP_REVERSE
299                         # OP_RANGE
300                         # OP_FLIP
301 (1 ..2) ;               # OP_FLOP
302 caller ;                # OP_CALLER
303 fileno STDIN ;          # OP_FILENO
304 eof STDIN ;             # OP_EOF
305 tell STDIN ;            # OP_TELL
306 readlink 1;             # OP_READLINK
307 time ;                  # OP_TIME
308 localtime ;             # OP_LOCALTIME
309 gmtime ;                # OP_GMTIME
310 eval { getgrnam 1 };    # OP_GGRNAM
311 eval { getgrgid 1 };    # OP_GGRGID
312 eval { getpwnam 1 };    # OP_GPWNAM
313 eval { getpwuid 1 };    # OP_GPWUID
314 prototype "foo";        # OP_PROTOTYPE
315 EXPECT
316 ########
317 # op.c
318 use warnings 'void' ;
319 for (@{[0]}) { "$_" }           # check warning isn't duplicated
320 no warnings 'void' ;
321 for (@{[0]}) { "$_" }           # check warning isn't duplicated
322 EXPECT
323 Useless use of string in void context at - line 3.
324 ########
325 # op.c
326 use warnings 'void' ;
327 use Config ;
328 BEGIN {
329     if ( ! $Config{d_telldir}) {
330         print <<EOM ;
331 SKIPPED
332 # telldir not present
333 EOM
334         exit 
335     }
336 }
337 telldir 1 ;             # OP_TELLDIR
338 no warnings 'void' ;
339 telldir 1 ;             # OP_TELLDIR
340 EXPECT
341 Useless use of telldir in void context at - line 13.
342 ########
343 # op.c
344 use warnings 'void' ;
345 use Config ;
346 BEGIN {
347     if ( ! $Config{d_getppid}) {
348         print <<EOM ;
349 SKIPPED
350 # getppid not present
351 EOM
352         exit 
353     }
354 }
355 getppid ;               # OP_GETPPID
356 no warnings 'void' ;
357 getppid ;               # OP_GETPPID
358 EXPECT
359 Useless use of getppid in void context at - line 13.
360 ########
361 # op.c
362 use warnings 'void' ;
363 use Config ;
364 BEGIN {
365     if ( ! $Config{d_getpgrp}) {
366         print <<EOM ;
367 SKIPPED
368 # getpgrp not present
369 EOM
370         exit 
371     }
372 }
373 getpgrp ;               # OP_GETPGRP
374 no warnings 'void' ;
375 getpgrp ;               # OP_GETPGRP
376 EXPECT
377 Useless use of getpgrp in void context at - line 13.
378 ########
379 # op.c
380 use warnings 'void' ;
381 use Config ;
382 BEGIN {
383     if ( ! $Config{d_times}) {
384         print <<EOM ;
385 SKIPPED
386 # times not present
387 EOM
388         exit 
389     }
390 }
391 times ;                 # OP_TMS
392 no warnings 'void' ;
393 times ;                 # OP_TMS
394 EXPECT
395 Useless use of times in void context at - line 13.
396 ########
397 # op.c
398 use warnings 'void' ;
399 use Config ;
400 BEGIN {
401     if ( ! $Config{d_getprior} or $^O eq 'os2') { # Locks before fixpak22
402         print <<EOM ;
403 SKIPPED
404 # getpriority not present
405 EOM
406         exit 
407     }
408 }
409 getpriority 1,2;        # OP_GETPRIORITY
410 no warnings 'void' ;
411 getpriority 1,2;        # OP_GETPRIORITY
412 EXPECT
413 Useless use of getpriority in void context at - line 13.
414 ########
415 # op.c
416 use warnings 'void' ;
417 use Config ;
418 BEGIN {
419     if ( ! $Config{d_getlogin}) {
420         print <<EOM ;
421 SKIPPED
422 # getlogin not present
423 EOM
424         exit 
425     }
426 }
427 getlogin ;                      # OP_GETLOGIN
428 no warnings 'void' ;
429 getlogin ;                      # OP_GETLOGIN
430 EXPECT
431 Useless use of getlogin in void context at - line 13.
432 ########
433 # op.c
434 use warnings 'void' ;
435 use Config ; BEGIN {
436 if ( ! $Config{d_socket}) {
437     print <<EOM ;
438 SKIPPED
439 # getsockname not present
440 # getpeername not present
441 # gethostbyname not present
442 # gethostbyaddr not present
443 # gethostent not present
444 # getnetbyname not present
445 # getnetbyaddr not present
446 # getnetent not present
447 # getprotobyname not present
448 # getprotobynumber not present
449 # getprotoent not present
450 # getservbyname not present
451 # getservbyport not present
452 # getservent not present
453 EOM
454     exit 
455 } }
456 getsockname STDIN ;     # OP_GETSOCKNAME
457 getpeername STDIN ;     # OP_GETPEERNAME
458 gethostbyname 1 ;       # OP_GHBYNAME
459 gethostbyaddr 1,2;      # OP_GHBYADDR
460 gethostent ;            # OP_GHOSTENT
461 getnetbyname 1 ;        # OP_GNBYNAME
462 getnetbyaddr 1,2 ;      # OP_GNBYADDR
463 getnetent ;             # OP_GNETENT
464 getprotobyname 1;       # OP_GPBYNAME
465 getprotobynumber 1;     # OP_GPBYNUMBER
466 getprotoent ;           # OP_GPROTOENT
467 getservbyname 1,2;      # OP_GSBYNAME
468 getservbyport 1,2;      # OP_GSBYPORT
469 getservent ;            # OP_GSERVENT
470
471 no warnings 'void' ;
472 getsockname STDIN ;     # OP_GETSOCKNAME
473 getpeername STDIN ;     # OP_GETPEERNAME
474 gethostbyname 1 ;       # OP_GHBYNAME
475 gethostbyaddr 1,2;      # OP_GHBYADDR
476 gethostent ;            # OP_GHOSTENT
477 getnetbyname 1 ;        # OP_GNBYNAME
478 getnetbyaddr 1,2 ;      # OP_GNBYADDR
479 getnetent ;             # OP_GNETENT
480 getprotobyname 1;       # OP_GPBYNAME
481 getprotobynumber 1;     # OP_GPBYNUMBER
482 getprotoent ;           # OP_GPROTOENT
483 getservbyname 1,2;      # OP_GSBYNAME
484 getservbyport 1,2;      # OP_GSBYPORT
485 getservent ;            # OP_GSERVENT
486 INIT {
487    # some functions may not be there, so we exit without running
488    exit;
489 }
490 EXPECT
491 Useless use of getsockname in void context at - line 24.
492 Useless use of getpeername in void context at - line 25.
493 Useless use of gethostbyname in void context at - line 26.
494 Useless use of gethostbyaddr in void context at - line 27.
495 Useless use of gethostent in void context at - line 28.
496 Useless use of getnetbyname in void context at - line 29.
497 Useless use of getnetbyaddr in void context at - line 30.
498 Useless use of getnetent in void context at - line 31.
499 Useless use of getprotobyname in void context at - line 32.
500 Useless use of getprotobynumber in void context at - line 33.
501 Useless use of getprotoent in void context at - line 34.
502 Useless use of getservbyname in void context at - line 35.
503 Useless use of getservbyport in void context at - line 36.
504 Useless use of getservent in void context at - line 37.
505 ########
506 # op.c
507 use warnings 'void' ;
508 *a ; # OP_RV2GV
509 $a ; # OP_RV2SV
510 @a ; # OP_RV2AV
511 %a ; # OP_RV2HV
512 no warnings 'void' ;
513 *a ; # OP_RV2GV
514 $a ; # OP_RV2SV
515 @a ; # OP_RV2AV
516 %a ; # OP_RV2HV
517 EXPECT
518 Useless use of a variable in void context at - line 3.
519 Useless use of a variable in void context at - line 4.
520 Useless use of a variable in void context at - line 5.
521 Useless use of a variable in void context at - line 6.
522 ########
523 # op.c
524 use warnings 'void' ;
525 "abc"; # OP_CONST
526 7 ; # OP_CONST
527 "x" . "y"; # optimized to OP_CONST
528 2 + 2; # optimized to OP_CONST
529 use constant U => undef;
530 U;
531 qq/"    \n/;
532 5 || print "bad\n";     # test OPpCONST_SHORTCIRCUIT
533 print "boo\n" if U;     # test OPpCONST_SHORTCIRCUIT
534 no warnings 'void' ;
535 "abc"; # OP_CONST
536 7 ; # OP_CONST
537 "x" . "y"; # optimized to OP_CONST
538 2 + 2; # optimized to OP_CONST
539 EXPECT
540 Useless use of a constant ("abc") in void context at - line 3.
541 Useless use of a constant (7) in void context at - line 4.
542 Useless use of a constant ("xy") in void context at - line 5.
543 Useless use of a constant (4) in void context at - line 6.
544 Useless use of a constant (undef) in void context at - line 8.
545 Useless use of a constant ("\"\t\n") in void context at - line 9.
546 ########
547 # op.c
548 use utf8;
549 use open qw( :utf8 :std );
550 use warnings 'void' ;
551 "àḆc"; # OP_CONST
552 "Ẋ" . "ƴ"; # optimized to OP_CONST
553 FOO;     # Bareword optimized to OP_CONST
554 use constant ů => undef;
555 ů;
556 5 || print "bad\n";     # test OPpCONST_SHORTCIRCUIT
557 print "boo\n" if ů;    # test OPpCONST_SHORTCIRCUIT
558 no warnings 'void' ;
559 "àḆc"; # OP_CONST
560 "Ẋ" . "ƴ"; # optimized to OP_CONST
561 EXPECT
562 Useless use of a constant ("\340\x{1e06}c") in void context at - line 5.
563 Useless use of a constant ("\x{1e8a}\x{1b4}") in void context at - line 6.
564 Useless use of a constant ("\x{ff26}\x{ff2f}\x{ff2f}") in void context at - line 7.
565 Useless use of a constant (undef) in void context at - line 9.
566 ########
567 # op.c
568 #
569 use warnings 'misc' ;
570 my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ;my $d = 'test';
571 @a =~ /abc/ ;
572 @a2 =~ s/a/b/ ;
573 @a3 =~ tr/a/b/ ;
574 @$b =~ /abc/ ;
575 @$b =~ s/a/b/ ;
576 @$b =~ tr/a/b/ ;
577 %a =~ /abc/ ;
578 %a2 =~ s/a/b/ ;
579 %a3 =~ tr/a/b/ ;
580 %$c =~ /abc/ ;
581 %$c =~ s/a/b/ ;
582 %$c =~ tr/a/b/ ;
583 $d =~ tr/a/b/d ;
584 $d2 =~ tr/a/bc/;
585 {
586 no warnings 'misc' ;
587 my $a ; my @a = () ; my %a = () ; my $b = \@a ; my $c = \%a ; my $d = 'test';
588 @a =~ /abc/ ;
589 @a =~ s/a/b/ ;
590 @a =~ tr/a/b/ ;
591 @$b =~ /abc/ ;
592 @$b =~ s/a/b/ ;
593 @$b =~ tr/a/b/ ;
594 %a =~ /abc/ ;
595 %a =~ s/a/b/ ;
596 %a =~ tr/a/b/ ;
597 %$c =~ /abc/ ;
598 %$c =~ s/a/b/ ;
599 %$c =~ tr/a/b/ ;
600 $d =~ tr/a/b/d ;
601 $d =~ tr/a/bc/ ;
602 }
603 EXPECT
604 Applying pattern match (m//) to @a will act on scalar(@a) at - line 5.
605 Applying substitution (s///) to @a2 will act on scalar(@a2) at - line 6.
606 Applying transliteration (tr///) to @a3 will act on scalar(@a3) at - line 7.
607 Applying pattern match (m//) to @array will act on scalar(@array) at - line 8.
608 Applying substitution (s///) to @array will act on scalar(@array) at - line 9.
609 Applying transliteration (tr///) to @array will act on scalar(@array) at - line 10.
610 Applying pattern match (m//) to %a will act on scalar(%a) at - line 11.
611 Applying substitution (s///) to %a2 will act on scalar(%a2) at - line 12.
612 Applying transliteration (tr///) to %a3 will act on scalar(%a3) at - line 13.
613 Applying pattern match (m//) to %hash will act on scalar(%hash) at - line 14.
614 Applying substitution (s///) to %hash will act on scalar(%hash) at - line 15.
615 Applying transliteration (tr///) to %hash will act on scalar(%hash) at - line 16.
616 Useless use of /d modifier in transliteration operator at - line 17.
617 Replacement list is longer than search list at - line 18.
618 Can't modify array dereference in substitution (s///) at - line 6, near "s/a/b/ ;"
619 BEGIN not safe after errors--compilation aborted at - line 20.
620 ########
621 # op.c
622 use warnings 'parenthesis' ;
623 my $a, $b = (1,2);
624 my @foo,%bar,   $quux; # there's a TAB here
625 my $x, $y or print;
626 no warnings 'parenthesis' ;
627 my $c, $d = (1,2);
628 EXPECT
629 Parentheses missing around "my" list at - line 3.
630 Parentheses missing around "my" list at - line 4.
631 ########
632 # op.c
633 use warnings 'parenthesis' ;
634 our $a, $b = (1,2);
635 no warnings 'parenthesis' ;
636 our $c, $d = (1,2);
637 EXPECT
638 Parentheses missing around "our" list at - line 3.
639 ########
640 # op.c
641 use warnings 'parenthesis' ;
642 local $a, $b = (1,2);
643 local *f, *g;
644 no warnings 'parenthesis' ;
645 local $c, $d = (1,2);
646 EXPECT
647 Parentheses missing around "local" list at - line 3.
648 Parentheses missing around "local" list at - line 4.
649 ########
650 # op.c
651 use warnings 'bareword' ;
652 print (ABC || 1) ;
653 no warnings 'bareword' ;
654 print (ABC || 1) ;
655 EXPECT
656 Bareword found in conditional at - line 3.
657 ########
658 --FILE-- abc
659
660 --FILE--
661 # op.c
662 use warnings 'misc' ;
663 open FH, "<abc" ;
664 $x = 1 if $x = <FH> ;
665 no warnings 'misc' ;
666 $x = 1 if $x = <FH> ;
667 EXPECT
668 Value of <HANDLE> construct can be "0"; test with defined() at - line 4.
669 ########
670 # op.c
671 use warnings 'misc' ;
672 opendir FH, "." ;
673 $x = 1 if $x = readdir FH ;
674 no warnings 'misc' ;
675 $x = 1 if $x = readdir FH ;
676 closedir FH ;
677 EXPECT
678 Value of readdir() operator can be "0"; test with defined() at - line 4.
679 ########
680 # op.c
681 use warnings 'misc' ;
682 $x = 1 if $x = <*> ;
683 no warnings 'misc' ;
684 $x = 1 if $x = <*> ;
685 EXPECT
686 Value of glob construct can be "0"; test with defined() at - line 3.
687 ########
688 # op.c
689 use warnings 'misc' ;
690 %a = (1,2,3,4) ;
691 $x = 1 if $x = each %a ;
692 no warnings 'misc' ;
693 $x = 1 if $x = each %a ;
694 EXPECT
695 Value of each() operator can be "0"; test with defined() at - line 4.
696 ########
697 # op.c
698 use warnings 'misc' ;
699 $x = 1 while $x = <*> and 0 ;
700 no warnings 'misc' ;
701 $x = 1 while $x = <*> and 0 ;
702 EXPECT
703 Value of glob construct can be "0"; test with defined() at - line 3.
704 ########
705 # op.c
706 use warnings 'misc' ;
707 opendir FH, "." ;
708 $x = 1 while $x = readdir FH and 0 ;
709 no warnings 'misc' ;
710 $x = 1 while $x = readdir FH and 0 ;
711 closedir FH ;
712 EXPECT
713 Value of readdir() operator can be "0"; test with defined() at - line 4.
714 ########
715 # op.c
716 use warnings 'misc';
717 open FH, "<abc";
718 ($_ = <FH>) // ($_ = 1);
719 opendir DH, ".";
720 %a = (1,2,3,4) ;
721 EXPECT
722 ########
723 # op.c
724 use warnings 'redefine' ;
725 sub fred {}
726 sub fred {}
727 no warnings 'redefine' ;
728 sub fred {}
729 EXPECT
730 Subroutine fred redefined at - line 4.
731 ########
732 # op.c
733 use warnings 'redefine' ;
734 sub fred () { 1 }
735 sub fred () { 1 }
736 no warnings 'redefine' ;
737 sub fred () { 1 }
738 EXPECT
739 Constant subroutine fred redefined at - line 4.
740 ########
741 # op.c
742 sub fred () { 1 }
743 sub fred () { 2 }
744 EXPECT
745 Constant subroutine fred redefined at - line 3.
746 ########
747 # op.c
748 sub fred () { 1 }
749 *fred = sub () { 2 };
750 EXPECT
751 Constant subroutine main::fred redefined at - line 3.
752 ########
753 # op.c
754 no warnings 'redefine' ;
755 sub fred () { 1 }
756 sub fred () { 2 }
757 EXPECT
758 ########
759 # op.c
760 no warnings 'redefine' ;
761 sub fred () { 1 }
762 *fred = sub () { 2 };
763 EXPECT
764 ########
765 # op.c
766 use warnings 'redefine' ;
767 format FRED =
768 .
769 format FRED =
770 .
771 no warnings 'redefine' ;
772 format FRED =
773 .
774 EXPECT
775 Format FRED redefined at - line 5.
776 ########
777 # op.c
778 push FRED;
779 no warnings 'deprecated' ;
780 push FRED;
781 EXPECT
782 Array @FRED missing the @ in argument 1 of push() at - line 2.
783 ########
784 # op.c
785 @a = keys FRED ;
786 no warnings 'deprecated' ;
787 @a = keys FRED ;
788 EXPECT
789 Hash %FRED missing the % in argument 1 of keys() at - line 2.
790 ########
791 # op.c
792 use warnings 'syntax' ;
793 exec "$^X -e 1" ; 
794 my $a
795 EXPECT
796 Statement unlikely to be reached at - line 4.
797         (Maybe you meant system() when you said exec()?)
798 ########
799 # op.c, no warning if exec isn't a statement.
800 use warnings 'syntax' ;
801 $a || exec "$^X -e 1" ;
802 my $a
803 EXPECT
804 ########
805 # op.c
806 defined(@a);
807 EXPECT
808 defined(@array) is deprecated at - line 2.
809         (Maybe you should just omit the defined()?)
810 ########
811 # op.c
812 my @a; defined(@a);
813 EXPECT
814 defined(@array) is deprecated at - line 2.
815         (Maybe you should just omit the defined()?)
816 ########
817 # op.c
818 defined(@a = (1,2,3));
819 EXPECT
820 defined(@array) is deprecated at - line 2.
821         (Maybe you should just omit the defined()?)
822 ########
823 # op.c
824 defined(%h);
825 EXPECT
826 defined(%hash) is deprecated at - line 2.
827         (Maybe you should just omit the defined()?)
828 ########
829 # op.c
830 my %h; defined(%h);
831 EXPECT
832 defined(%hash) is deprecated at - line 2.
833         (Maybe you should just omit the defined()?)
834 ########
835 # op.c
836 no warnings 'syntax' ;
837 exec "$^X -e 1" ; 
838 my $a
839 EXPECT
840
841 ########
842 # op.c
843 sub fred();
844 sub fred($) {}
845 EXPECT
846 Prototype mismatch: sub main::fred () vs ($) at - line 3.
847 ########
848 # op.c
849 use utf8;
850 use open qw( :utf8 :std );
851 sub frèd();
852 sub frèd($) {}
853 EXPECT
854 Prototype mismatch: sub main::frèd () vs ($) at - line 5.
855 ########
856 # op.c
857 use utf8;
858 use open qw( :utf8 :std );
859 use warnings;
860 eval "sub fòò (\$\0) {}";
861 EXPECT
862 Illegal character in prototype for main::fòò : $\0 at (eval 1) line 1.
863 ########
864 # op.c
865 use utf8;
866 use open qw( :utf8 :std );
867 use warnings;
868 eval "sub foo (\0) {}";
869 EXPECT
870 Illegal character in prototype for main::foo : \0 at (eval 1) line 1.
871 ########
872 # op.c
873 use utf8;
874 use open qw( :utf8 :std );
875 use warnings;
876 BEGIN { $::{"foo"} = "\$\0L\351on" }
877 BEGIN { eval "sub foo (\$\0L\x{c3}\x{a9}on) {}"; }
878 EXPECT
879 Illegal character in prototype for main::foo : $\x{0}L... at (eval 1) line 1.
880 ########
881 # op.c
882 use utf8;
883 use open qw( :utf8 :std );
884 use warnings;
885 BEGIN { eval "sub foo (\0) {}"; }
886 EXPECT
887 Illegal character in prototype for main::foo : \0 at (eval 1) line 1.
888 ########
889 # op.c
890 use warnings;
891 eval "sub foo (\xAB) {}";
892 EXPECT
893 Illegal character in prototype for main::foo : \x{ab} at (eval 1) line 1.
894 ########
895 # op.c
896 use utf8;
897 use open qw( :utf8 :std );
898 use warnings;
899 BEGIN { eval "sub foo (\x{30cb}) {}"; }
900 EXPECT
901 Illegal character in prototype for main::foo : \x{30cb} at (eval 1) line 1.
902 ########
903 # op.c
904 use utf8;
905 use open qw( :utf8 :std );
906 use warnings;
907 BEGIN { $::{"foo"} = "\x{30cb}" }
908 BEGIN { eval "sub foo {}"; }
909 EXPECT
910 Prototype mismatch: sub main::foo (ニ) vs none at (eval 1) line 1.
911 ########
912 # op.c
913 $^W = 0 ;
914 sub fred() ;
915 sub fred($) {}
916 {
917     no warnings 'prototype' ;
918     sub Fred() ;
919     sub Fred($) {}
920     use warnings 'prototype' ;
921     sub freD() ;
922     sub freD($) {}
923 }
924 sub FRED() ;
925 sub FRED($) {}
926 EXPECT
927 Prototype mismatch: sub main::fred () vs ($) at - line 4.
928 Prototype mismatch: sub main::freD () vs ($) at - line 11.
929 Prototype mismatch: sub main::FRED () vs ($) at - line 14.
930 ########
931 # op.c [Perl_ck_cmp]
932 use warnings 'syntax' ;
933 no warnings 'deprecated';
934 @a = $[ < 5;
935 @a = $[ > 5;
936 @a = $[ <= 5;
937 @a = $[ >= 5;
938 @a = 42 < $[;
939 @a = 42 > $[;
940 @a = 42 <= $[;
941 @a = 42 >= $[;
942 use integer;
943 @a = $[ < 5;
944 @a = $[ > 5;
945 @a = $[ <= 5;
946 @a = $[ >= 5;
947 @a = 42 < $[;
948 @a = 42 > $[;
949 @a = 42 <= $[;
950 @a = 42 >= $[;
951 no integer;
952 @a = $[ < $5;
953 @a = $[ > $5;
954 @a = $[ <= $5;
955 @a = $[ >= $5;
956 @a = $42 < $[;
957 @a = $42 > $[;
958 @a = $42 <= $[;
959 @a = $42 >= $[;
960 use integer;
961 @a = $[ < $5;
962 @a = $[ > $5;
963 @a = $[ <= $5;
964 @a = $[ >= $5;
965 @a = $42 < $[;
966 @a = $42 > $[;
967 @a = $42 <= $[;
968 @a = $42 >= $[;
969 EXPECT
970 $[ used in numeric lt (<) (did you mean $] ?) at - line 4.
971 $[ used in numeric gt (>) (did you mean $] ?) at - line 5.
972 $[ used in numeric le (<=) (did you mean $] ?) at - line 6.
973 $[ used in numeric ge (>=) (did you mean $] ?) at - line 7.
974 $[ used in numeric lt (<) (did you mean $] ?) at - line 8.
975 $[ used in numeric gt (>) (did you mean $] ?) at - line 9.
976 $[ used in numeric le (<=) (did you mean $] ?) at - line 10.
977 $[ used in numeric ge (>=) (did you mean $] ?) at - line 11.
978 $[ used in numeric lt (<) (did you mean $] ?) at - line 13.
979 $[ used in numeric gt (>) (did you mean $] ?) at - line 14.
980 $[ used in numeric le (<=) (did you mean $] ?) at - line 15.
981 $[ used in numeric ge (>=) (did you mean $] ?) at - line 16.
982 $[ used in numeric lt (<) (did you mean $] ?) at - line 17.
983 $[ used in numeric gt (>) (did you mean $] ?) at - line 18.
984 $[ used in numeric le (<=) (did you mean $] ?) at - line 19.
985 $[ used in numeric ge (>=) (did you mean $] ?) at - line 20.
986 ########
987 # op.c [Perl_ck_length]
988 use warnings 'syntax' ;
989 length(@a);
990 length(%b);
991 length(@$c);
992 length(%$d);
993 length($a);
994 length(my %h);
995 length(my @g);
996 EXPECT
997 length() used on @a (did you mean "scalar(@a)"?) at - line 3.
998 length() used on %b (did you mean "scalar(keys %b)"?) at - line 4.
999 length() used on @array (did you mean "scalar(@array)"?) at - line 5.
1000 length() used on %hash (did you mean "scalar(keys %hash)"?) at - line 6.
1001 length() used on %h (did you mean "scalar(keys %h)"?) at - line 8.
1002 length() used on @g (did you mean "scalar(@g)"?) at - line 9.
1003 ########
1004 # op.c
1005 use warnings 'syntax' ;
1006 join /---/, 'x', 'y', 'z';
1007 EXPECT
1008 /---/ should probably be written as "---" at - line 3.
1009 ########
1010 # op.c
1011 use utf8;
1012 use open qw( :utf8 :std );
1013 use warnings 'syntax' ;
1014 join /~~~/, 'x', 'y', 'z';
1015 EXPECT
1016 /~~~/ should probably be written as "~~~" at - line 5.
1017 ########
1018 # op.c [Perl_peep]
1019 use warnings 'prototype' ;
1020 fred() ; 
1021 sub fred ($$) {}
1022 no warnings 'prototype' ;
1023 joe() ; 
1024 sub joe ($$) {}
1025 EXPECT
1026 main::fred() called too early to check prototype at - line 3.
1027 ########
1028 # op.c [Perl_newATTRSUB]
1029 --FILE-- abc.pm
1030 use warnings 'void' ;
1031 BEGIN { $| = 1; print "in begin\n"; }
1032 CHECK { print "in check\n"; }
1033 INIT { print "in init\n"; }
1034 END { print "in end\n"; }
1035 print "in mainline\n";
1036 1;
1037 --FILE--
1038 use abc;
1039 delete $INC{"abc.pm"};
1040 require abc;
1041 do "abc.pm";
1042 EXPECT
1043 in begin
1044 in mainline
1045 in check
1046 in init
1047 in begin
1048 Too late to run CHECK block at abc.pm line 3.
1049 Too late to run INIT block at abc.pm line 4.
1050 in mainline
1051 in begin
1052 Too late to run CHECK block at abc.pm line 3.
1053 Too late to run INIT block at abc.pm line 4.
1054 in mainline
1055 in end
1056 in end
1057 in end
1058 ########
1059 # op.c [Perl_newATTRSUB]
1060 --FILE-- abc.pm
1061 no warnings 'void' ;
1062 BEGIN { $| = 1; print "in begin\n"; }
1063 CHECK { print "in check\n"; }
1064 INIT { print "in init\n"; }
1065 END { print "in end\n"; }
1066 print "in mainline\n";
1067 1;
1068 --FILE--
1069 require abc;
1070 do "abc.pm";
1071 EXPECT
1072 in begin
1073 in mainline
1074 in begin
1075 in mainline
1076 in end
1077 in end
1078 ########
1079 # op.c
1080 my @x;
1081 use warnings 'syntax' ;
1082 push(@x);
1083 unshift(@x);
1084 no warnings 'syntax' ;
1085 push(@x);
1086 unshift(@x);
1087 EXPECT
1088 Useless use of push with no values at - line 4.
1089 Useless use of unshift with no values at - line 5.
1090 ########
1091 # op.c
1092 # 20020401 mjd@plover.com at suggestion of jfriedl@yahoo.com
1093 use warnings 'regexp';
1094 split /blah/g, "blah";
1095 no warnings 'regexp';
1096 split /blah/g, "blah";
1097 EXPECT
1098 Use of /g modifier is meaningless in split at - line 4.
1099 ########
1100 # op.c
1101 use warnings 'precedence';
1102 $a = $b & $c == $d;
1103 $a = $b ^ $c != $d;
1104 $a = $b | $c > $d;
1105 $a = $b < $c & $d;
1106 $a = $b >= $c ^ $d;
1107 $a = $b <= $c | $d;
1108 $a = $b <=> $c & $d;
1109 $a &= $b == $c; $a |= $b == $c; $a ^= $b == $c; # shouldn't warn
1110 no warnings 'precedence';
1111 $a = $b & $c == $d;
1112 $a = $b ^ $c != $d;
1113 $a = $b | $c > $d;
1114 $a = $b < $c & $d;
1115 $a = $b >= $c ^ $d;
1116 $a = $b <= $c | $d;
1117 $a = $b <=> $c & $d;
1118 EXPECT
1119 Possible precedence problem on bitwise & operator at - line 3.
1120 Possible precedence problem on bitwise ^ operator at - line 4.
1121 Possible precedence problem on bitwise | operator at - line 5.
1122 Possible precedence problem on bitwise & operator at - line 6.
1123 Possible precedence problem on bitwise ^ operator at - line 7.
1124 Possible precedence problem on bitwise | operator at - line 8.
1125 Possible precedence problem on bitwise & operator at - line 9.
1126 ########
1127 # op.c
1128 use integer;
1129 use warnings 'precedence';
1130 $a = $b & $c == $d;
1131 $a = $b ^ $c != $d;
1132 $a = $b | $c > $d;
1133 $a = $b < $c & $d;
1134 $a = $b >= $c ^ $d;
1135 $a = $b <= $c | $d;
1136 $a = $b <=> $c & $d;
1137 no warnings 'precedence';
1138 $a = $b & $c == $d;
1139 $a = $b ^ $c != $d;
1140 $a = $b | $c > $d;
1141 $a = $b < $c & $d;
1142 $a = $b >= $c ^ $d;
1143 $a = $b <= $c | $d;
1144 $a = $b <=> $c & $d;
1145 EXPECT
1146 Possible precedence problem on bitwise & operator at - line 4.
1147 Possible precedence problem on bitwise ^ operator at - line 5.
1148 Possible precedence problem on bitwise | operator at - line 6.
1149 Possible precedence problem on bitwise & operator at - line 7.
1150 Possible precedence problem on bitwise ^ operator at - line 8.
1151 Possible precedence problem on bitwise | operator at - line 9.
1152 Possible precedence problem on bitwise & operator at - line 10.
1153 ########
1154 # op.c
1155
1156 # ok    => local() has desired effect;
1157 # ignore=> local() silently ignored
1158
1159 use warnings 'syntax';
1160
1161 local(undef);           # OP_UNDEF              ignore
1162 sub lval : lvalue {};
1163 local(lval());          # OP_ENTERSUB
1164 local($x **= 1);        # OP_POW
1165 local($x *=  1);        # OP_MULTIPLY
1166 local($x /=  1);        # OP_DIVIDE
1167 local($x %=  1);        # OP_MODULO
1168 local($x x=  1);        # OP_REPEAT
1169 local($x +=  1);        # OP_ADD
1170 local($x -=  1);        # OP_SUBTRACT
1171 local($x .=  1);        # OP_CONCAT
1172 local($x <<= 1);        # OP_LEFT_SHIFT
1173 local($x >>= 1);        # OP_RIGHT_SHIFT
1174 local($x &=  1);        # OP_BIT_AND
1175 local($x ^=  1);        # OP_BIT_XOR
1176 local($x |=  1);        # OP_BIT_OR
1177 {
1178     use integer;
1179     local($x *= 1);     # OP_I_MULTIPLY
1180     local($x /= 1);     # OP_I_DIVIDE
1181     local($x %= 1);     # OP_I_MODULO
1182     local($x += 1);     # OP_I_ADD
1183     local($x -= 1);     # OP_I_SUBTRACT
1184 }
1185 local($x?$y:$z) = 1;    # OP_COND_EXPR          ok
1186 # these two are fatal run-time errors instead
1187 #local(@$a);            # OP_RV2AV              ok
1188 #local(%$a);            # OP_RV2HV              ok
1189 local(*a);              # OP_RV2GV              ok
1190 local(@a[1,2]);         # OP_ASLICE             ok
1191 local(@a{1,2});         # OP_HSLICE             ok
1192 local(@a = (1,2));      # OP_AASSIGN
1193 local($$x);             # OP_RV2SV              ok
1194 local($#a);             # OP_AV2ARYLEN
1195 local($x =   1);        # OP_SASSIGN
1196 local($x &&= 1);        # OP_ANDASSIGN
1197 local($x ||= 1);        # OP_ORASSIGN
1198 local($x //= 1);        # OP_DORASSIGN
1199 local($a[0]);           # OP_AELEMFAST          ok
1200
1201 local(substr($x,0,1));  # OP_SUBSTR
1202 local(pos($x));         # OP_POS
1203 local(vec($x,0,1));     # OP_VEC
1204 local($a[$b]);          # OP_AELEM              ok
1205 local($a{$b});          # OP_HELEM              ok
1206
1207 no warnings 'syntax';
1208 EXPECT
1209 Useless localization of subroutine entry at - line 10.
1210 Useless localization of exponentiation (**) at - line 11.
1211 Useless localization of multiplication (*) at - line 12.
1212 Useless localization of division (/) at - line 13.
1213 Useless localization of modulus (%) at - line 14.
1214 Useless localization of repeat (x) at - line 15.
1215 Useless localization of addition (+) at - line 16.
1216 Useless localization of subtraction (-) at - line 17.
1217 Useless localization of concatenation (.) or string at - line 18.
1218 Useless localization of left bitshift (<<) at - line 19.
1219 Useless localization of right bitshift (>>) at - line 20.
1220 Useless localization of bitwise and (&) at - line 21.
1221 Useless localization of bitwise xor (^) at - line 22.
1222 Useless localization of bitwise or (|) at - line 23.
1223 Useless localization of integer multiplication (*) at - line 26.
1224 Useless localization of integer division (/) at - line 27.
1225 Useless localization of integer modulus (%) at - line 28.
1226 Useless localization of integer addition (+) at - line 29.
1227 Useless localization of integer subtraction (-) at - line 30.
1228 Useless localization of list assignment at - line 39.
1229 Useless localization of array length at - line 41.
1230 Useless localization of scalar assignment at - line 42.
1231 Useless localization of logical and assignment (&&=) at - line 43.
1232 Useless localization of logical or assignment (||=) at - line 44.
1233 Useless localization of defined or assignment (//=) at - line 45.
1234 Useless localization of substr at - line 48.
1235 Useless localization of match position at - line 49.
1236 Useless localization of vec at - line 50.
1237 ########
1238 # op.c
1239 my $x1 if 0;
1240 my @x2 if 0;
1241 my %x3 if 0;
1242 my ($x4) if 0;
1243 my ($x5,@x6, %x7) if 0;
1244 0 && my $z1;
1245 0 && my (%z2);
1246 # these shouldn't warn
1247 our $x if 0;
1248 our $x unless 0;
1249 if (0) { my $w1 }
1250 if (my $w2) { $a=1 }
1251 if ($a && (my $w3 = 1)) {$a = 2}
1252
1253 EXPECT
1254 Deprecated use of my() in false conditional at - line 2.
1255 Deprecated use of my() in false conditional at - line 3.
1256 Deprecated use of my() in false conditional at - line 4.
1257 Deprecated use of my() in false conditional at - line 5.
1258 Deprecated use of my() in false conditional at - line 6.
1259 Deprecated use of my() in false conditional at - line 7.
1260 Deprecated use of my() in false conditional at - line 8.
1261 ########
1262 # op.c
1263 $[ = 1;
1264 ($[) = 1;
1265 use warnings 'deprecated';
1266 $[ = 2;
1267 ($[) = 2;
1268 no warnings 'deprecated';
1269 $[ = 3;
1270 ($[) = 3;
1271 EXPECT
1272 Use of assignment to $[ is deprecated at - line 2.
1273 Use of assignment to $[ is deprecated at - line 3.
1274 Use of assignment to $[ is deprecated at - line 5.
1275 Use of assignment to $[ is deprecated at - line 6.
1276 ########
1277 # op.c
1278 use warnings 'void';
1279 @x = split /y/, "z";
1280 $x = split /y/, "z";
1281      split /y/, "z";
1282 no warnings 'void';
1283 @x = split /y/, "z";
1284 $x = split /y/, "z";
1285      split /y/, "z";
1286 EXPECT
1287 Useless use of split in void context at - line 5.
1288 ########
1289 # op.c
1290 use warnings 'redefine' ;
1291 use utf8;
1292 use open qw( :utf8 :std );
1293 sub frèd {}
1294 sub frèd {}
1295 no warnings 'redefine' ;
1296 sub frèd {}
1297 EXPECT
1298 Subroutine frèd redefined at - line 6.
1299 ########
1300 # op.c
1301 use warnings 'redefine' ;
1302 use utf8;
1303 use open qw( :utf8 :std );
1304 sub frèd () { 1 }
1305 sub frèd () { 1 }
1306 no warnings 'redefine' ;
1307 sub frèd () { 1 }
1308 EXPECT
1309 Constant subroutine frèd redefined at - line 6.
1310 ########
1311 # op.c
1312 use utf8;
1313 use open qw( :utf8 :std );
1314 sub frèd () { 1 }
1315 sub frèd () { 2 }
1316 EXPECT
1317 Constant subroutine frèd redefined at - line 5.
1318 ########
1319 # op.c
1320 use utf8;
1321 use open qw( :utf8 :std );
1322 sub frèd () { 1 }
1323 *frèd = sub () { 2 };
1324 EXPECT
1325 Constant subroutine main::frèd redefined at - line 5.
1326 ########
1327 # op.c
1328 use warnings 'redefine' ;
1329 use utf8;
1330 use open qw( :utf8 :std );
1331 sub ᚠርƊ {}
1332 sub ᚠርƊ {}
1333 no warnings 'redefine' ;
1334 sub ᚠርƊ {}
1335 EXPECT
1336 Subroutine ᚠርƊ redefined at - line 6.
1337 ########
1338 # op.c
1339 use warnings 'redefine' ;
1340 use utf8;
1341 use open qw( :utf8 :std );
1342 sub ᚠርƊ () { 1 }
1343 sub ᚠርƊ () { 1 }
1344 no warnings 'redefine' ;
1345 sub ᚠርƊ () { 1 }
1346 EXPECT
1347 Constant subroutine ᚠርƊ redefined at - line 6.
1348 ########
1349 # op.c
1350 use utf8;
1351 use open qw( :utf8 :std );
1352 sub ᚠርƊ () { 1 }
1353 sub ᚠርƊ () { 2 }
1354 EXPECT
1355 Constant subroutine ᚠርƊ redefined at - line 5.
1356 ########
1357 # op.c
1358 use utf8;
1359 use open qw( :utf8 :std );
1360 sub ᚠርƊ () { 1 }
1361 *ᚠርƊ = sub () { 2 };
1362 EXPECT
1363 Constant subroutine main::ᚠርƊ redefined at - line 5.
1364 ########