in reply to Best way to keep script with generated output

This is a cool idea! I'm not sure if my tactic is much better but I thought of using a source filter:

package CFGPL; use warnings; use strict; our $Comment_Start = '#'; sub import { shift; $Comment_Start = quotemeta shift if @_; # Read in only our commented code... open my $own_src_file, '<', $0; my @perl_code = grep { /^$Comment_Start/ } <$own_src_file>; close $own_src_file; die "Config file has no code in comments\n" unless @perl_code; # Write it back to config file and erase uncommented stuff! open STDOUT, '>', $0; print @perl_code; } # Filter out the leading comment and runs the code... require Filter::Simple; Filter::Simple::FILTER( sub { s/^$Comment_Start//gm; } ); 1;
Easy to invoke like: perl -MCFGPL config.file.