in reply to Modifying Config.pm and/or Config_heavy.pl

Is it possible to modify the Config without using a editor to modify the Config file(s) manually?

Hi Outaspace,

Indeed it is possible (as per ExtUtils::FakeConfig):
use warnings; use strict; use Config; my $obj = tied %Config::Config; print $Config::Config{make}, "\n"; $obj->{make} = "modified_value"; print $Config::Config{make}, "\n"; __END__ outputs: dmake modified_value

Under certain situations (eg in a Makefile.PL) you might need to run that code in a BEGIN{} block.

Cheers,
Rob

Replies are listed 'Best First'.
Re^2: Modifying Config.pm and/or Config_heavy.pl
by Outaspace (Scribe) on Sep 29, 2006 at 13:28 UTC

    Ok, but I need a way to save the config to the files. The main purpose is to administrate different Perl Versions. I allready thought about writing my own config files, where the admin can define own summary output and can add values. Maybe it can be done with something like FakeConfig, but on every perl startup.

    I know it isnt wise to edit the Config, but there are some values which are safe to edit (if you know what you do) like relocating lib pathes, editing "cf_email", "_exe", ...

    Andre

      The main purpose is to administrate different Perl Versions

      Couldn't you just run a script that sets which perl is found ? On my Win32 box I have six or so versions of perl and run a batch file to set the path so that 'perl' finds the perl executable that I want. (I have a separate batch file for each build of perl.) Then %Config should contain the info I want.

      If you really do need to rewrite Config.pm then it's best to do something similar to EU::FC - which leaves the existing Config files as they are, writes the new values in Config_m.pm, and loads those new values, when needed, by running perl with the '-MConfig_m' switch (or by setting the perl5opt environment variable to '-MConfig_m').

      Cheers,
      Rob