# main part of script ... # then redo the crc: rewrite_crc('datafile'); sub rewrite_crc { my $file = shift; open(SELF,"+<$0")||die $!; while(){last if /^__END__/} print SELF new_crc($file),$/; truncate(SELF,tell SELF); close SELF; } sub new_crc { my $file = shift; my $crc = 0; # calculate new crc here $crc = 43256; return $crc; } __END__ 1234567