1use Config::Std; 2use Test::More 'no_plan'; 3 4# May fail with v5.8.1 only, 5# if so define PERL_HASH_SEED=0 to suppress Hash Randomisation 6 7my $output_file = 'test.cfg'; 8 9my %data = ( 10 # Default section... 11 '' => { 12 'def1' => 'def val 1', 13 'def 2' => 'def val 2', 14 'def 3 ml' => "def val 3\nacross several\n lines", 15 'def 3' => 'def val 3', 16 'def 4' => 'def val 4', 17 }, 18 19 # Named section... 20 'Named' => { 21 'hi there' => q{What's your name???}, 22 'list' => [qw(a list of values), 'all different'], 23 }, 24 25 # Complex named section... 26 'Complex named!!!' => { 27 123456789 => 'zero', 28 '%^$%$#%' => 'curses', 29 }, 30); 31 32ok eval{ write_config %data => $output_file } => 'Write succeeded'; 33 34ok open(my $fh, '<', $output_file) => 'File created'; 35 36ok my $config = do{ local $/; <$fh> } => 'File read'; 37 38ok my $orig_config = do{ local $/; <DATA> } => 'DATA loaded'; 39 40is $orig_config, $config => 'Content correct'; 41 42 43__DATA__ 44 45def 3: def val 3 46def 2: def val 2 47 48def 3 ml: def val 3 49 : across several 50 : lines 51 52def 4: def val 4 53def1: def val 1 54 55[Complex named!!!] 56 57%^$%$#%: curses 58123456789: zero 59 60[Named] 61 62hi there: What's your name??? 63 64list: a 65list: list 66list: of 67list: values 68list: all different 69 70