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