- say => 'say',
- state => 'state',
- switch => 'switch',
- bitwise => 'bitwise',
- evalbytes => 'evalbytes',
- current_sub => '__SUB__',
- refaliasing => 'refaliasing',
- postderef_qq => 'postderef_qq',
- unicode_eval => 'unieval',
- declared_refs => 'myref',
- unicode_strings => 'unicode',
- fc => 'fc',
- signatures => 'signatures',
- isa => 'isa',
- indirect => 'indirect',
- multidimensional => 'multidimensional',
- bareword_filehandles => 'bareword_filehandles',
- try => 'try',
- defer => 'defer',
+ say => 'say',
+ state => 'state',
+ switch => 'switch',
+ bitwise => 'bitwise',
+ evalbytes => 'evalbytes',
+ current_sub => '__SUB__',
+ refaliasing => 'refaliasing',
+ postderef_qq => 'postderef_qq',
+ unicode_eval => 'unieval',
+ declared_refs => 'myref',
+ unicode_strings => 'unicode',
+ fc => 'fc',
+ signatures => 'signatures',
+ isa => 'isa',
+ indirect => 'indirect',
+ multidimensional => 'multidimensional',
+ bareword_filehandles => 'bareword_filehandles',
+ try => 'try',
+ defer => 'defer',
-open "perl.h", "<", "perl.h" or die "$0 cannot open perl.h: $!";
-while (readline "perl.h") {
- next unless /#\s*define\s+(HINT_FEATURE_MASK|HINT_UNI_8_BIT)/;
+foreach my $line_data (@{$hp->lines}) {
+ next unless $line_data->{type} eq "content"
+ and $line_data->{sub_type} eq "#define";
+ my $line = $line_data->{line};
+ next unless $line=~/^\s*#\s*define\s+(HINT_FEATURE_MASK|HINT_UNI_8_BIT)/;
my $hex = $HintMask = $1;
my $bits = sprintf "%b", oct $1;
$bits =~ /^0*1+(0*)\z/
my $hex = $HintMask = $1;
my $bits = sprintf "%b", oct $1;
$bits =~ /^0*1+(0*)\z/
$HintShift = length $1;
my $bits_needed =
length sprintf "%b", scalar keys %UniqueBundles;
$bits =~ /1{$bits_needed}/
or die "Not enough bits (need $bits_needed)"
$HintShift = length $1;
my $bits_needed =
length sprintf "%b", scalar keys %UniqueBundles;
$bits =~ /1{$bits_needed}/
or die "Not enough bits (need $bits_needed)"
}
if ($Uni8Bit && $HintMask) { last }
}
die "No HINT_FEATURE_MASK defined in perl.h" unless $HintMask;
die "No HINT_UNI_8_BIT defined in perl.h" unless $Uni8Bit;
}
if ($Uni8Bit && $HintMask) { last }
}
die "No HINT_FEATURE_MASK defined in perl.h" unless $HintMask;
die "No HINT_UNI_8_BIT defined in perl.h" unless $Uni8Bit;
=head2 The 'postderef' and 'postderef_qq' features
The 'postderef_qq' feature extends the applicability of L<postfix
=head2 The 'postderef' and 'postderef_qq' features
The 'postderef_qq' feature extends the applicability of L<postfix
-dereference syntax|perlref/Postfix Dereference Syntax> so that postfix array
-and scalar dereference are available in double-quotish interpolations. For
-example, it makes the following two statements equivalent:
+dereference syntax|perlref/Postfix Dereference Syntax> so that
+postfix array dereference, postfix scalar dereference, and
+postfix array highest index access are available in double-quotish interpolations.
+For example, it makes the following two statements equivalent: