diff options
author | Nicholas Clark <nick@ccl4.org> | 2010-08-26 15:39:27 +0200 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2010-08-26 16:23:02 +0200 |
commit | ffe43484366d04b5b8df04f334f4942c6c439258 (patch) | |
tree | 0e26ceb450b0a0959ab721e8ee8450b63da3b356 /lib | |
parent | 051df77b499863c6769059306df6224f3fc7af57 (diff) | |
download | perl-ffe43484366d04b5b8df04f334f4942c6c439258.tar.gz |
Convert mktables to assign lexicals via do { no overloading; ... }; blocks.
This avoids repeating the lexical's name, whilst retaining the tight scope of
no overloading.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/unicore/mktables | 138 |
1 files changed, 69 insertions, 69 deletions
diff --git a/lib/unicore/mktables b/lib/unicore/mktables index 9b958efa5c..f2f77cebde 100644 --- a/lib/unicore/mktables +++ b/lib/unicore/mktables @@ -9,7 +9,7 @@ # 5.8: needs pack "U". But almost all occurrences of objaddr have been # removed in favor of using 'no overloading'. You also would have to go # through and replace occurrences like: -# my $addr; { no overloading; $addr = pack 'J', $self; } +# my $addr = do { no overloading; pack 'J', $self; } # with # my $addr = main::objaddr $self; # (or reverse commit 9b01bafde4b022706c3d6f947a0963f821b2e50b @@ -1450,7 +1450,7 @@ package main; # Use typeglob to give the anonymous subroutine the name we want *$destroy_name = sub { my $self = shift; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $self->$destroy_callback if $destroy_callback; foreach my $field (keys %{$package_fields{$package}}) { @@ -1549,7 +1549,7 @@ package main; return Carp::carp_too_few_args(\@_, 2) if main::DEBUG && @_ < 2; my $self = shift; my $value = shift; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; Carp::carp_extra_args(\@_) if main::DEBUG && @_; if (ref $value) { return if grep { $value == $_ } @{$field->{$addr}}; @@ -1583,7 +1583,7 @@ package main; *$subname = sub { use strict "refs"; Carp::carp_extra_args(\@_) if main::DEBUG && @_ > 1; - my $addr; { no overloading; $addr = pack 'J', $_[0]; } + my $addr = do { no overloading; pack 'J', $_[0]; }; if (ref $field->{$addr} ne 'ARRAY') { my $type = ref $field->{$addr}; $type = 'scalar' unless $type; @@ -1781,7 +1781,7 @@ sub trace { return main::trace(@_); } my $class = shift; my $self = bless \do{ my $anonymous_scalar }, $class; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Set defaults $handler{$addr} = \&main::process_generic_property_file; @@ -1872,7 +1872,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $file = $file{$addr}; @@ -2042,7 +2042,7 @@ END my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Here the file is open (or if the handle is not a ref, is an open # 'virtual' file). Get the next line; any inserted lines get priority @@ -2187,7 +2187,7 @@ END # # an each_line_handler() on the line. # # my $self = shift; -# my $addr; { no overloading; $addr = pack 'J', $self; } +# my $addr = do { no overloading; pack 'J', $self; }; # # foreach my $inserted_ref (@{$added_lines{$addr}}) { # my ($adjusted, $line) = @{$inserted_ref}; @@ -2266,7 +2266,7 @@ END my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # If not accepting a list return, just return the first one. return shift @{$missings{$addr}} unless wantarray; @@ -2280,7 +2280,7 @@ END # Add a property field to $_, if this file requires it. my $self = shift; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $property = $property{$addr}; Carp::carp_extra_args(\@_) if main::DEBUG && @_; @@ -2299,7 +2299,7 @@ END my $message = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $message = 'Unexpected line' unless $message; @@ -2364,7 +2364,7 @@ package Multi_Default; my $class = shift; my $self = bless \do{my $anonymous_scalar}, $class; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; while (@_ > 1) { my $default = shift; @@ -2382,7 +2382,7 @@ package Multi_Default; my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return each %{$class_defaults{$addr}}; } @@ -2429,7 +2429,7 @@ package Alias; my $class = shift; my $self = bless \do { my $anonymous_scalar }, $class; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $name{$addr} = shift; $loose_match{$addr} = shift; @@ -2491,7 +2491,7 @@ sub trace { return main::trace(@_); } my $class = shift; my $self = bless \do { my $anonymous_scalar }, $class; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $start{$addr} = shift; $end{$addr} = shift; @@ -2521,7 +2521,7 @@ sub trace { return main::trace(@_); } sub _operator_stringify { my $self = shift; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Output it like '0041..0065 (value)' my $return = sprintf("%04X", $start{$addr}) @@ -2544,7 +2544,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return $standard_form{$addr} if defined $standard_form{$addr}; return $value{$addr}; @@ -2557,7 +2557,7 @@ sub trace { return main::trace(@_); } my $indent = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $return = $indent . sprintf("%04X", $start{$addr}) @@ -2639,7 +2639,7 @@ sub trace { return main::trace(@_); } return _union($class, $initialize, %args) if defined $initialize; $self = bless \do { my $anonymous_scalar }, $class; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Optional parent object, only for debug info. $owner_name_of{$addr} = delete $args{'Owner'}; @@ -2671,7 +2671,7 @@ sub trace { return main::trace(@_); } sub _operator_stringify { my $self = shift; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return "Range_List attached to '$owner_name_of{$addr}'" if $owner_name_of{$addr}; @@ -2806,7 +2806,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # If the range list is empty, return a large value that isn't adjacent # to any that could be in the range list, for simpler tests @@ -2861,7 +2861,7 @@ sub trace { return main::trace(@_); } my $code_point = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return if $code_point > $max{$addr}; my $r = $ranges{$addr}; # The current list of ranges @@ -3035,7 +3035,7 @@ sub trace { return main::trace(@_); } Carp::carp_extra_args(\%args) if main::DEBUG && %args; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; if ($operation ne '+' && $operation ne '-') { Carp::my_carp_bug("$owner_name_of{$addr}First parameter to _add_delete must be '+' or '-'. No action taken."); @@ -3631,7 +3631,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return if $self->is_empty; @@ -3648,7 +3648,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $count = 0; foreach my $range (@{$ranges{$addr}}) { @@ -3683,7 +3683,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # These are quickly computable. Return looks like 'min..max;count' return $self->min . "..$max{$addr};" . scalar @{$ranges{$addr}}; @@ -3991,7 +3991,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # On first pass, don't choose less desirable code points; if no good # one is found, repeat, allowing a less desirable one to be selected. @@ -4183,7 +4183,7 @@ sub trace { return main::trace(@_); } my $class = shift; my $self = bless \do { my $anonymous_scalar }, $class; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my %args = @_; @@ -4373,7 +4373,7 @@ sub trace { return main::trace(@_); } # release $name = ucfirst($name) unless $name =~ /^k[A-Z]/; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Figure out if should be loosely matched if not already specified. if (! defined $loose_match) { @@ -4458,7 +4458,7 @@ sub trace { return main::trace(@_); } my $nominal_length_ptr = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # For efficiency, don't recalculate, but this means that adding new # aliases could change what the shortest is, so the code that does @@ -4574,7 +4574,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my @list = @{$comment{$addr}}; return @list if wantarray; my $return = ""; @@ -4592,7 +4592,7 @@ sub trace { return main::trace(@_); } # initialization for range lists. my $self = shift; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $initialization = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; @@ -4631,7 +4631,7 @@ sub trace { return main::trace(@_); } # the range Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Start with the header my @OUT = $self->header; @@ -4728,7 +4728,7 @@ sub trace { return main::trace(@_); } my $info = shift; # Any message associated with it. Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $status{$addr} = $status; $status_info{$addr} = $info; @@ -4743,7 +4743,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $locked{$addr} = ""; @@ -4771,7 +4771,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return 0 if ! $locked{$addr}; Carp::my_carp_bug("Can't modify a locked table. Stack trace of locking:\n$locked{$addr}\n\n"); @@ -4929,7 +4929,7 @@ sub trace { return main::trace(@_); } _Range_List => $range_list, %args); - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $anomalous_entries{$addr} = []; $core_access{$addr} = $core_access; @@ -4981,7 +4981,7 @@ sub trace { return main::trace(@_); } # Can't change the table if locked. return if $self->carp_if_locked; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $has_specials{$addr} = 1 if $type; @@ -4999,7 +4999,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return "" unless @{$anomalous_entries{$addr}}; return join("\n", @{$anomalous_entries{$addr}}) . "\n"; @@ -5026,8 +5026,8 @@ sub trace { return main::trace(@_); } return; } - my $addr; { no overloading; $addr = pack 'J', $self; } - my $other_addr; { no overloading; $other_addr = pack 'J', $other; } + my $addr = do { no overloading; pack 'J', $self; }; + my $other_addr = do { no overloading; pack 'J', $other; }; local $to_trace = 0 if main::DEBUG; @@ -5060,7 +5060,7 @@ sub trace { return main::trace(@_); } my $map = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Convert the input to the standard equivalent, if any (won't have any # for $STRING properties) @@ -5105,7 +5105,7 @@ sub trace { return main::trace(@_); } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # If overridden, use that return $to_output_map{$addr} if defined $to_output_map{$addr}; @@ -5150,7 +5150,7 @@ sub trace { return main::trace(@_); } # No sense generating a comment if aren't going to write it out. return if ! $self->to_output_map; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $property = $self->property; @@ -5322,7 +5322,7 @@ END my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $name = $self->property->swash_name; @@ -5767,7 +5767,7 @@ END my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return $self->SUPER::write( ($self->property == $block) @@ -5914,7 +5914,7 @@ sub trace { return main::trace(@_); } _Property => $property, _Range_List => $range_list, ); - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $conflicting{$addr} = [ ]; $equivalents{$addr} = [ ]; @@ -5955,7 +5955,7 @@ sub trace { return main::trace(@_); } return if $self->carp_if_locked; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; if (ref $other) { @@ -6022,7 +6022,7 @@ sub trace { return main::trace(@_); } # be an optional parameter. Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Check if the conflicting name is exactly the same as any existing # alias in this table (as long as there is a real object there to @@ -6144,7 +6144,7 @@ sub trace { return main::trace(@_); } my $are_equivalent = $self->is_equivalent_to($other); return if ! defined $are_equivalent || $are_equivalent; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $current_leader = ($related) ? $parent{$addr} : $leader{$addr}; if ($related && @@ -6155,8 +6155,8 @@ sub trace { return main::trace(@_); } $related = 0; } - my $leader; { no overloading; $leader = pack 'J', $current_leader; } - my $other_addr; { no overloading; $other_addr = pack 'J', $other; } + my $leader = do { no overloading; pack 'J', $current_leader; }; + my $other_addr = do { no overloading; pack 'J', $other; }; # Any tables that are equivalent to or children of this table must now # instead be equivalent to or (children) to the new leader (parent), @@ -6171,7 +6171,7 @@ sub trace { return main::trace(@_); } next if $table == $other; trace "setting $other to be the leader of $table, status=$status" if main::DEBUG && $to_trace; - my $table_addr; { no overloading; $table_addr = pack 'J', $table; } + my $table_addr = do { no overloading; pack 'J', $table; }; $leader{$table_addr} = $other; $matches_all{$table_addr} = $matches_all; $self->_set_range_list($other->_range_list); @@ -6225,7 +6225,7 @@ sub trace { return main::trace(@_); } # an equivalent group Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $leader; } + my $addr = do { no overloading; pack 'J', $leader; }; if ($leader{$addr} != $leader) { Carp::my_carp_bug(<<END @@ -6280,7 +6280,7 @@ END && $parent == $property->table('N') && defined (my $yes = $property->table('Y'))) { - my $yes_addr; { no overloading; $yes_addr = pack 'J', $yes; } + my $yes_addr = do { no overloading; pack 'J', $yes; }; @yes_perl_synonyms = grep { $_->property == $perl } main::uniques($yes, @@ -6296,12 +6296,12 @@ END my @conflicting; # Will hold the table conflicts. # Look at the parent, any yes synonyms, and all the children - my $parent_addr; { no overloading; $parent_addr = pack 'J', $parent; } + my $parent_addr = do { no overloading; pack 'J', $parent; }; for my $table ($parent, @yes_perl_synonyms, @{$children{$parent_addr}}) { - my $table_addr; { no overloading; $table_addr = pack 'J', $table; } + my $table_addr = do { no overloading; pack 'J', $table; }; my $table_property = $table->property; # Tables are separated by a blank line to create a grouping. @@ -6718,7 +6718,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } my %args = @_; $self = bless \do { my $anonymous_scalar }, $class; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; $directory{$addr} = delete $args{'Directory'}; $file{$addr} = delete $args{'File'}; @@ -6792,7 +6792,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } my $name = shift; my %args = @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $table = $table_ref{$addr}{$name}; my $standard_name = main::standardize($name); @@ -6860,7 +6860,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } my $name = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return $table_ref{$addr}{$name} if defined $table_ref{$addr}{$name}; @@ -6888,7 +6888,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } # priority; 'undef' is returned if the type isn't defined; # or $map_directory for everything else. - my $addr; { no overloading; $addr = pack 'J', shift; } + my $addr = do { no overloading; pack 'J', shift; }; return $directory{$addr} if defined $directory{$addr}; return undef if $type{$addr} == $UNKNOWN; @@ -6909,7 +6909,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; return $file{$addr} if defined $file{$addr}; return $map{$addr}->external_name; @@ -6925,7 +6925,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } # The whole point of this pseudo property is match tables. return 1 if $self == $perl; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # Don't generate tables of code points that match the property values # of a string property. Such a list would most likely have many @@ -7009,7 +7009,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } my $map = shift; # What the range maps to. # Rest of parameters passed on. - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; # If haven't the type of the property, gather information to figure it # out. @@ -7061,7 +7061,7 @@ sub trace { return main::trace(@_) if main::DEBUG && $to_trace } my $self = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $self; } + my $addr = do { no overloading; pack 'J', $self; }; my $type = $type{$addr}; @@ -7576,7 +7576,7 @@ sub standardize ($) { else { # Keep track of cycles in the input, and refuse to infinitely loop - my $addr; { no overloading; $addr = pack 'J', $item; } + my $addr = do { no overloading; pack 'J', $item; }; if (defined $already_output{$addr}) { return "${indent}ALREADY OUTPUT: $item\n"; } @@ -7697,7 +7697,7 @@ sub dump_inside_out { my $fields_ref = shift; Carp::carp_extra_args(\@_) if main::DEBUG && @_; - my $addr; { no overloading; $addr = pack 'J', $object; } + my $addr = do { no overloading; pack 'J', $object; }; my %hash; foreach my $key (keys %$fields_ref) { @@ -7725,7 +7725,7 @@ sub _operator_dot { } else { my $ref = ref $$which; - my $addr; { no overloading; $addr = pack 'J', $$which; } + my $addr = do { no overloading; pack 'J', $$which; }; $$which = "$ref ($addr)"; } } @@ -8757,7 +8757,7 @@ END if $file->has_missings_defaults; foreach my $default_ref (@missings_list) { my $default = $default_ref->[0]; - my $addr; { no overloading; $addr = pack 'J', property_ref($default_ref->[1]); } + my $addr = do { no overloading; pack 'J', property_ref($default_ref->[1]); }; # For string properties, the default is just what the # file says, but non-string properties should already |