t/lib/dprof/test8_v Perl code profiler tests
t/lib/dprof/V.pm Perl code profiler tests
t/lib/Dummy.pm Module for testing base.pm
-t/lib/feature/err Tests for enabling/disabling err feature
t/lib/feature/implicit Tests for implicit loading of feature.pm
t/lib/feature/nonesuch Tests for enabling/disabling nonexistent feature
t/lib/feature/say Tests for enabling/disabling say feature
#define pp_not Perl_pp_not
#define pp_null Perl_pp_null
#define pp_oct Perl_pp_oct
+#define pp_once Perl_pp_once
#define pp_open Perl_pp_open
#define pp_open_dir Perl_pp_open_dir
#define pp_or Perl_pp_or
#define pp_not() Perl_pp_not(aTHX)
#define pp_null() Perl_pp_null(aTHX)
#define pp_oct() Perl_pp_oct(aTHX)
+#define pp_once() Perl_pp_once(aTHX)
#define pp_open() Perl_pp_open(aTHX)
#define pp_open_dir() Perl_pp_open_dir(aTHX)
#define pp_or() Perl_pp_or(aTHX)
#define KEY_endservent 54
#define KEY_eof 55
#define KEY_eq 56
-#define KEY_err 57
-#define KEY_eval 58
-#define KEY_exec 59
-#define KEY_exists 60
-#define KEY_exit 61
-#define KEY_exp 62
-#define KEY_fcntl 63
-#define KEY_fileno 64
-#define KEY_flock 65
-#define KEY_for 66
-#define KEY_foreach 67
-#define KEY_fork 68
-#define KEY_format 69
-#define KEY_formline 70
-#define KEY_ge 71
-#define KEY_getc 72
-#define KEY_getgrent 73
-#define KEY_getgrgid 74
-#define KEY_getgrnam 75
-#define KEY_gethostbyaddr 76
-#define KEY_gethostbyname 77
-#define KEY_gethostent 78
-#define KEY_getlogin 79
-#define KEY_getnetbyaddr 80
-#define KEY_getnetbyname 81
-#define KEY_getnetent 82
-#define KEY_getpeername 83
-#define KEY_getpgrp 84
-#define KEY_getppid 85
-#define KEY_getpriority 86
-#define KEY_getprotobyname 87
-#define KEY_getprotobynumber 88
-#define KEY_getprotoent 89
-#define KEY_getpwent 90
-#define KEY_getpwnam 91
-#define KEY_getpwuid 92
-#define KEY_getservbyname 93
-#define KEY_getservbyport 94
-#define KEY_getservent 95
-#define KEY_getsockname 96
-#define KEY_getsockopt 97
-#define KEY_given 98
-#define KEY_glob 99
-#define KEY_gmtime 100
-#define KEY_goto 101
-#define KEY_grep 102
-#define KEY_gt 103
-#define KEY_hex 104
-#define KEY_if 105
-#define KEY_index 106
-#define KEY_int 107
-#define KEY_ioctl 108
-#define KEY_join 109
-#define KEY_keys 110
-#define KEY_kill 111
-#define KEY_last 112
-#define KEY_lc 113
-#define KEY_lcfirst 114
-#define KEY_le 115
-#define KEY_length 116
-#define KEY_link 117
-#define KEY_listen 118
-#define KEY_local 119
-#define KEY_localtime 120
-#define KEY_lock 121
-#define KEY_log 122
-#define KEY_lstat 123
-#define KEY_lt 124
-#define KEY_m 125
-#define KEY_map 126
-#define KEY_mkdir 127
-#define KEY_msgctl 128
-#define KEY_msgget 129
-#define KEY_msgrcv 130
-#define KEY_msgsnd 131
-#define KEY_my 132
-#define KEY_ne 133
-#define KEY_next 134
-#define KEY_no 135
-#define KEY_not 136
-#define KEY_oct 137
-#define KEY_open 138
-#define KEY_opendir 139
-#define KEY_or 140
-#define KEY_ord 141
-#define KEY_our 142
-#define KEY_pack 143
-#define KEY_package 144
-#define KEY_pipe 145
-#define KEY_pop 146
-#define KEY_pos 147
-#define KEY_print 148
-#define KEY_printf 149
-#define KEY_prototype 150
-#define KEY_push 151
-#define KEY_q 152
-#define KEY_qq 153
-#define KEY_qr 154
-#define KEY_quotemeta 155
-#define KEY_qw 156
-#define KEY_qx 157
-#define KEY_rand 158
-#define KEY_read 159
-#define KEY_readdir 160
-#define KEY_readline 161
-#define KEY_readlink 162
-#define KEY_readpipe 163
-#define KEY_recv 164
-#define KEY_redo 165
-#define KEY_ref 166
-#define KEY_rename 167
-#define KEY_require 168
-#define KEY_reset 169
-#define KEY_return 170
-#define KEY_reverse 171
-#define KEY_rewinddir 172
-#define KEY_rindex 173
-#define KEY_rmdir 174
-#define KEY_s 175
-#define KEY_say 176
-#define KEY_scalar 177
-#define KEY_seek 178
-#define KEY_seekdir 179
-#define KEY_select 180
-#define KEY_semctl 181
-#define KEY_semget 182
-#define KEY_semop 183
-#define KEY_send 184
-#define KEY_setgrent 185
-#define KEY_sethostent 186
-#define KEY_setnetent 187
-#define KEY_setpgrp 188
-#define KEY_setpriority 189
-#define KEY_setprotoent 190
-#define KEY_setpwent 191
-#define KEY_setservent 192
-#define KEY_setsockopt 193
-#define KEY_shift 194
-#define KEY_shmctl 195
-#define KEY_shmget 196
-#define KEY_shmread 197
-#define KEY_shmwrite 198
-#define KEY_shutdown 199
-#define KEY_sin 200
-#define KEY_sleep 201
-#define KEY_socket 202
-#define KEY_socketpair 203
-#define KEY_sort 204
-#define KEY_splice 205
-#define KEY_split 206
-#define KEY_sprintf 207
-#define KEY_sqrt 208
-#define KEY_srand 209
-#define KEY_stat 210
-#define KEY_state 211
-#define KEY_study 212
-#define KEY_sub 213
-#define KEY_substr 214
-#define KEY_symlink 215
-#define KEY_syscall 216
-#define KEY_sysopen 217
-#define KEY_sysread 218
-#define KEY_sysseek 219
-#define KEY_system 220
-#define KEY_syswrite 221
-#define KEY_tell 222
-#define KEY_telldir 223
-#define KEY_tie 224
-#define KEY_tied 225
-#define KEY_time 226
-#define KEY_times 227
-#define KEY_tr 228
-#define KEY_truncate 229
-#define KEY_uc 230
-#define KEY_ucfirst 231
-#define KEY_umask 232
-#define KEY_undef 233
-#define KEY_unless 234
-#define KEY_unlink 235
-#define KEY_unpack 236
-#define KEY_unshift 237
-#define KEY_untie 238
-#define KEY_until 239
-#define KEY_use 240
-#define KEY_utime 241
-#define KEY_values 242
-#define KEY_vec 243
-#define KEY_wait 244
-#define KEY_waitpid 245
-#define KEY_wantarray 246
-#define KEY_warn 247
-#define KEY_when 248
-#define KEY_while 249
-#define KEY_write 250
-#define KEY_x 251
-#define KEY_xor 252
-#define KEY_y 253
+#define KEY_eval 57
+#define KEY_exec 58
+#define KEY_exists 59
+#define KEY_exit 60
+#define KEY_exp 61
+#define KEY_fcntl 62
+#define KEY_fileno 63
+#define KEY_flock 64
+#define KEY_for 65
+#define KEY_foreach 66
+#define KEY_fork 67
+#define KEY_format 68
+#define KEY_formline 69
+#define KEY_ge 70
+#define KEY_getc 71
+#define KEY_getgrent 72
+#define KEY_getgrgid 73
+#define KEY_getgrnam 74
+#define KEY_gethostbyaddr 75
+#define KEY_gethostbyname 76
+#define KEY_gethostent 77
+#define KEY_getlogin 78
+#define KEY_getnetbyaddr 79
+#define KEY_getnetbyname 80
+#define KEY_getnetent 81
+#define KEY_getpeername 82
+#define KEY_getpgrp 83
+#define KEY_getppid 84
+#define KEY_getpriority 85
+#define KEY_getprotobyname 86
+#define KEY_getprotobynumber 87
+#define KEY_getprotoent 88
+#define KEY_getpwent 89
+#define KEY_getpwnam 90
+#define KEY_getpwuid 91
+#define KEY_getservbyname 92
+#define KEY_getservbyport 93
+#define KEY_getservent 94
+#define KEY_getsockname 95
+#define KEY_getsockopt 96
+#define KEY_given 97
+#define KEY_glob 98
+#define KEY_gmtime 99
+#define KEY_goto 100
+#define KEY_grep 101
+#define KEY_gt 102
+#define KEY_hex 103
+#define KEY_if 104
+#define KEY_index 105
+#define KEY_int 106
+#define KEY_ioctl 107
+#define KEY_join 108
+#define KEY_keys 109
+#define KEY_kill 110
+#define KEY_last 111
+#define KEY_lc 112
+#define KEY_lcfirst 113
+#define KEY_le 114
+#define KEY_length 115
+#define KEY_link 116
+#define KEY_listen 117
+#define KEY_local 118
+#define KEY_localtime 119
+#define KEY_lock 120
+#define KEY_log 121
+#define KEY_lstat 122
+#define KEY_lt 123
+#define KEY_m 124
+#define KEY_map 125
+#define KEY_mkdir 126
+#define KEY_msgctl 127
+#define KEY_msgget 128
+#define KEY_msgrcv 129
+#define KEY_msgsnd 130
+#define KEY_my 131
+#define KEY_ne 132
+#define KEY_next 133
+#define KEY_no 134
+#define KEY_not 135
+#define KEY_oct 136
+#define KEY_open 137
+#define KEY_opendir 138
+#define KEY_or 139
+#define KEY_ord 140
+#define KEY_our 141
+#define KEY_pack 142
+#define KEY_package 143
+#define KEY_pipe 144
+#define KEY_pop 145
+#define KEY_pos 146
+#define KEY_print 147
+#define KEY_printf 148
+#define KEY_prototype 149
+#define KEY_push 150
+#define KEY_q 151
+#define KEY_qq 152
+#define KEY_qr 153
+#define KEY_quotemeta 154
+#define KEY_qw 155
+#define KEY_qx 156
+#define KEY_rand 157
+#define KEY_read 158
+#define KEY_readdir 159
+#define KEY_readline 160
+#define KEY_readlink 161
+#define KEY_readpipe 162
+#define KEY_recv 163
+#define KEY_redo 164
+#define KEY_ref 165
+#define KEY_rename 166
+#define KEY_require 167
+#define KEY_reset 168
+#define KEY_return 169
+#define KEY_reverse 170
+#define KEY_rewinddir 171
+#define KEY_rindex 172
+#define KEY_rmdir 173
+#define KEY_s 174
+#define KEY_say 175
+#define KEY_scalar 176
+#define KEY_seek 177
+#define KEY_seekdir 178
+#define KEY_select 179
+#define KEY_semctl 180
+#define KEY_semget 181
+#define KEY_semop 182
+#define KEY_send 183
+#define KEY_setgrent 184
+#define KEY_sethostent 185
+#define KEY_setnetent 186
+#define KEY_setpgrp 187
+#define KEY_setpriority 188
+#define KEY_setprotoent 189
+#define KEY_setpwent 190
+#define KEY_setservent 191
+#define KEY_setsockopt 192
+#define KEY_shift 193
+#define KEY_shmctl 194
+#define KEY_shmget 195
+#define KEY_shmread 196
+#define KEY_shmwrite 197
+#define KEY_shutdown 198
+#define KEY_sin 199
+#define KEY_sleep 200
+#define KEY_socket 201
+#define KEY_socketpair 202
+#define KEY_sort 203
+#define KEY_splice 204
+#define KEY_split 205
+#define KEY_sprintf 206
+#define KEY_sqrt 207
+#define KEY_srand 208
+#define KEY_stat 209
+#define KEY_state 210
+#define KEY_study 211
+#define KEY_sub 212
+#define KEY_substr 213
+#define KEY_symlink 214
+#define KEY_syscall 215
+#define KEY_sysopen 216
+#define KEY_sysread 217
+#define KEY_sysseek 218
+#define KEY_system 219
+#define KEY_syswrite 220
+#define KEY_tell 221
+#define KEY_telldir 222
+#define KEY_tie 223
+#define KEY_tied 224
+#define KEY_time 225
+#define KEY_times 226
+#define KEY_tr 227
+#define KEY_truncate 228
+#define KEY_uc 229
+#define KEY_ucfirst 230
+#define KEY_umask 231
+#define KEY_undef 232
+#define KEY_unless 233
+#define KEY_unlink 234
+#define KEY_unpack 235
+#define KEY_unshift 236
+#define KEY_untie 237
+#define KEY_until 238
+#define KEY_use 239
+#define KEY_utime 240
+#define KEY_values 241
+#define KEY_vec 242
+#define KEY_wait 243
+#define KEY_waitpid 244
+#define KEY_wantarray 245
+#define KEY_warn 246
+#define KEY_when 247
+#define KEY_while 248
+#define KEY_write 249
+#define KEY_x 250
+#define KEY_xor 251
+#define KEY_y 252
/* ex: set ro: */
endservent
eof
eq
-err
eval
exec
exists
my %feature = (
switch => 'feature_switch',
say => "feature_say",
- err => "feature_err",
state => "feature_state",
);
my %feature_bundle = (
- "5.10.0" => [qw(switch say err state)],
+ "5.10.0" => [qw(switch say state)],
);
# latest version here
See L<perlfunc/say> for details.
-=head2 the 'err' feature
-
-C<use feature 'err'> tells the compiler to enable the C<err>
-operator.
-
-C<err> is a low-precedence variant of the C<//> operator:
-see C<perlop> for details.
-
=head2 the 'state' feature
C<use feature 'state'> tells the compiler to enable C<state>
a I<feature bundle>. The name of a feature bundle is prefixed with
a colon, to distinguish it from an actual feature. At present, the
only feature bundles are C<use feature ":5.10"> and C<use feature ":5.10.0">,
-which both are equivalent to C<use feature qw(switch say err state)>.
+which both are equivalent to C<use feature qw(switch say state)>.
In the forthcoming 5.10.X perl releases, C<use feature ":5.10"> will be
equivalent to the latest C<use feature ":5.10.X">.
nonassoc list operators (rightward)
right not
left and
- left or xor err
+ left or xor
In the following sections, these operators are covered in precedence order.
@a = scalar(@b) || @c; # really meant this
@a = @b ? @b : @c; # this works fine, though
-As more readable alternatives to C<&&>, C<//> and C<||> when used for
-control flow, Perl provides C<and>, C<err> and C<or> operators (see below).
-The short-circuit behavior is identical. The precedence of "and", "err"
+As more readable alternatives to C<&&> and C<||> when used for
+control flow, Perl provides the C<and> and C<or> operators (see below).
+The short-circuit behavior is identical. The precedence of "and"
and "or" is much lower, however, so that you can safely use them after a
list operator without the need for parentheses:
expression is evaluated only if the left expression is true.
=head2 Logical or, Defined or, and Exclusive Or
-X<operator, logical, or> X<operator, logical, xor> X<operator, logical, err>
+X<operator, logical, or> X<operator, logical, xor>
X<operator, logical, defined or> X<operator, logical, exclusive or>
-X<or> X<xor> X<err>
+X<or> X<xor>
Binary "or" returns the logical disjunction of the two surrounding
expressions. It's equivalent to || except for the very low precedence.
Then again, you could always use parentheses.
-Binary "err" is equivalent to C<//>--it's just like binary "or", except it
-tests its left argument's definedness instead of its truth. There are two
-ways to remember "err": either because many functions return C<undef> on
-an B<err>or, or as a sort of correction: C<$a = ($b err 'default')>. This
-keyword is only available when the 'err' feature is enabled: see
-L<feature> for more information.
-
Binary "xor" returns the exclusive-OR of the two surrounding expressions.
It cannot short circuit, of course.
char str[ MAX_ARGS_OP * 2 + 2 ]; /* One ';', one '\0' */
if (code == -KEY_chop || code == -KEY_chomp
- || code == -KEY_exec || code == -KEY_system || code == -KEY_err)
+ || code == -KEY_exec || code == -KEY_system)
goto set;
if (code == -KEY_mkdir) {
ret = sv_2mortal(newSVpvs("_;$"));
+++ /dev/null
-Check the lexical scoping of the err keyword.
-(The actual behaviour is tested in t/op/dor.t)
-
-__END__
-# No err; should be a syntax error.
-use warnings;
-my $undef err print "Hello!\n";
-EXPECT
-Bareword found where operator expected at - line 3, near "$undef err"
- (Missing operator before err?)
-Unquoted string "err" may clash with future reserved word at - line 3.
-syntax error at - line 3, near "$undef err "
-Execution of - aborted due to compilation errors.
-########
-# With err, should work
-use warnings;
-use feature "err";
-my $undef err print "Hello", "world";
-EXPECT
-Helloworld
-########
-# With err, should work in eval too
-use warnings;
-use feature "err";
-eval q(my $undef err print "Hello", "world");
-EXPECT
-Helloworld
-########
-# feature out of scope; should be a syntax error.
-use warnings;
-{ use feature 'err'; }
-my $undef err print "Hello", "world";
-EXPECT
-Bareword found where operator expected at - line 4, near "$undef err"
- (Missing operator before err?)
-Unquoted string "err" may clash with future reserved word at - line 4.
-syntax error at - line 4, near "$undef err "
-Execution of - aborted due to compilation errors.
-########
-# 'no feature' should work
-use warnings;
-use feature 'err';
-my $undef err print "Hello", "world";
-no feature;
-my $undef2 err "Hello", "world";
-EXPECT
-Bareword found where operator expected at - line 6, near "$undef2 err"
- (Missing operator before err?)
-Unquoted string "err" may clash with future reserved word at - line 6.
-String found where operator expected at - line 6, near "err "Hello""
- (Do you need to predeclare err?)
-syntax error at - line 6, near "$undef2 err "
-Execution of - aborted due to compilation errors.
-########
-# 'no feature "err"' should work too
-use warnings;
-use feature 'err';
-my $undef err print "Hello", "world";
-no feature 'err';
-$undef err print "Hello", "world";
-EXPECT
-Bareword found where operator expected at - line 6, near "$undef err"
- (Missing operator before err?)
-Unquoted string "err" may clash with future reserved word at - line 6.
-syntax error at - line 6, near "$undef err "
-Execution of - aborted due to compilation errors.
########
# op.c
use warnings 'misc';
-use feature 'err';
open FH, "<abc";
-$_ = <FH> err $_ = 1;
($_ = <FH>) // ($_ = 1);
opendir DH, ".";
-$_ = readdir DH err $_ = 1;
-$_ = <*> err $_ = 1;
%a = (1,2,3,4) ;
-$_ = each %a err $_ = 1;
EXPECT
########
# op.c
}
BEGIN { require './test.pl'; }
-plan tests => 238;
+plan tests => 237;
while (<DATA>) {
chomp;
endservent ()
eof (;*)
eq ($$)
-err ()
eval undef
exec undef
exists undef
}
package main;
-use feature "err";
require './test.pl';
-plan( tests => 35 );
+plan( tests => 31 );
my($x);
like([] // 0, qr/^ARRAY/, ' // : left-hand operand a referece');
-$x=1;
-is(($x err 0), 1, ' err: left-hand operand defined');
-
-$x = undef;
-is(($x err 1), 1, ' err: left-hand operand undef');
-
-$x='';
-is(($x err 0), '', ' err: left-hand operand defined but empty');
-
-like(([] err 0), qr/^ARRAY/, ' err: left-hand operand a referece');
-
$x=undef;
$x //= 1;
is($x, 1, ' //=: left-hand operand undefined');
BEGIN { require "./test.pl"; }
-plan(tests => 62);
+plan(tests => 61);
use Config;
$r = runperl(
- switches => [ '-E', '"undef err say q(Hello, world!)"']
-);
-is( $r, "Hello, world!\n", "-E err" );
-
-$r = runperl(
switches => [ '-E', '"undef ~~ undef and say q(Hello, world!)"']
);
is( $r, "Hello, world!\n", "-E ~~" );
switch (tmp) {
case KEY_or:
case KEY_and:
- case KEY_err:
case KEY_for:
case KEY_unless:
case KEY_if:
case KEY_eof:
UNI(OP_EOF);
- case KEY_err:
- OPERATOR(DOROP);
-
case KEY_exp:
UNI(OP_EXP);
goto unknown;
- case 'r':
- if (name[2] == 'r')
- { /* err */
- return (all_keywords || FEATURE_IS_ENABLED("err") ? -KEY_err : 0);
- }
-
- goto unknown;
-
case 'x':
if (name[2] == 'p')
{ /* exp */