Blame Storable.pm.PL

Packit 14c646
use strict;
Packit 14c646
use warnings;
Packit 14c646
Packit 14c646
use Config;
Packit 14c646
Packit 14c646
my $template;
Packit 14c646
{	# keep all the code in an external template to keep it easy to update
Packit 14c646
	local $/;
Packit 14c646
	open my $FROM, '<', '__Storable__.pm' or die $!;
Packit 14c646
	$template = <$FROM>;
Packit 14c646
	close $FROM or die $!;
Packit 14c646
}
Packit 14c646
Packit 14c646
sub CAN_FLOCK {
Packit 14c646
	return
Packit 14c646
		$Config{'d_flock'} ||
Packit 14c646
		$Config{'d_fcntl_can_lock'} ||
Packit 14c646
		$Config{'d_lockf'}
Packit 14c646
		? 1 : 0;
Packit 14c646
}
Packit 14c646
Packit 14c646
my $CAN_FLOCK = CAN_FLOCK();
Packit 14c646
Packit 14c646
# populate the sub and preserve it if used outside
Packit 14c646
$template =~ s{^sub CAN_FLOCK;.*$}{sub CAN_FLOCK { ${CAN_FLOCK} } # computed by Storable.pm.PL}m;
Packit 14c646
# alternatively we could remove the sub
Packit 14c646
#$template =~ s{^sub CAN_FLOCK;.*$}{}m;
Packit 14c646
# replace local function calls to hardcoded value
Packit 14c646
$template =~ s{&CAN_FLOCK}{${CAN_FLOCK}}g;
Packit 14c646
Packit 14c646
{
Packit 14c646
	open my $OUT, '>', 'Storable.pm' or die $!;
Packit 14c646
	print {$OUT} $template or die $!;
Packit 14c646
	close $OUT or die $!;
Packit 14c646
}