#!/usr/bin/perl # This script attempts to reproduce: # https://sourceforge.net/tracker/index.php?func=detail&aid=1230339&group_id=6926&atid=106926 use strict; use warnings; use Test::More tests => 2; use File::Spec; use Config::IniFiles; my $filename = File::Spec->catfile( File::Spec->curdir(), "t", "store-and-retrieve-here-doc-terminator.ini" ); my @file_write_subs = ( sub { my ($cfg) = @_; $cfg->WriteConfig($filename); return; }, sub { my ($cfg) = @_; open my $fh, '>', $filename or die "Cannot open '$filename' for writing - $!"; $cfg->OutputConfigToFileHandle($fh); close($fh); return; }, ); foreach my $write_sub (@file_write_subs) { # Prepare the offending file. { # Delete the stray file - we want to over-write it. unlink($filename); my $cfg=Config::IniFiles->new(); $cfg->newval ("MySection", "MyParam", "Hello\nEOT\n"); $write_sub->($cfg); } { my $cfg=Config::IniFiles->new(-file => $filename); # TEST*2 is (scalar($cfg->val ("MySection", "MyParam")), "Hello\nEOT\n", "Default here-doc terminator was stored and retrieved correctly", ); } # Delete it again to keep the working-copy clean. unlink($filename); }