http://www.perlmonks.org?node_id=11110553


in reply to getting Log::Log4perl to install on windows strawberry perl

As a side note, you can also apply a patch to the test:

@@ -448,6 +448,7 @@ log4perl.appender.Logfile.header_text = This is a nice header. log4perl.appender.Logfile.syswrite = 1 log4perl.appender.Logfile.layout = Log::Log4perl::Layout::SimpleLayou +t +log4perl.appender.Logfile.mode = clobber ); Log::Log4perl->init(\$data);

Replies are listed 'Best First'.
Re^2: getting Log::Log4perl to install on windows strawberry perl
by Aldebaran (Curate) on Dec 25, 2019 at 17:41 UTC
    As a side note, you can also apply a patch to the test:

    Can you elaborate as to how this is done?

    C:\Users\tblaz\Documents\evelyn>type 1.patch.pl #!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11108769 use warnings; @@ -448,6 +448,7 @@ log4perl.appender.Logfile.header_text = This is a nice header. log4perl.appender.Logfile.syswrite = 1 log4perl.appender.Logfile.layout = Log::Log4perl::Layout::SimpleLayou +t +log4perl.appender.Logfile.mode = clobber ); Log::Log4perl->init(\$data); C:\Users\tblaz\Documents\evelyn>

      The file isn't a Perl script, it's basically a unified diff that is commonly fed into the patch program (originally written by Larry Wall) to apply the patches automatically. Typically, the filename is included in the diff output, so in this case I don't think patch can handle this format, but this patch is simple enough: it's telling you to insert the line "log4perl.appender.Logfile.mode = clobber" after the line "log4perl.appender.Logfile.layout = Log::Log4perl::Layout::SimpleLayout" (as indicated at the top, look at line number 448), and we can infer from the context in this thread that it's referring to t/026FileApp.t in the Log::Log4perl distro.

        we can infer from the context in this thread that it's referring to t/026FileApp.t in the Log::Log4perl distro.

        Thx, haukex, I had to read all of that very carefully and serially in order to follow along. [I hadn't patched anything before.] A little more context with the new t/026FileApp.t here:

        ######################################################### # Print a header into a newly opened file ######################################################### $data = qq( log4perl.category = DEBUG, Logfile log4perl.appender.Logfile = Log::Log4perl::Appender::File log4perl.appender.Logfile.filename = ${testfile}_5 log4perl.appender.Logfile.header_text = This is a nice header. log4perl.appender.Logfile.layout = Log::Log4perl::Layout::SimpleLayo +ut ); Log::Log4perl->init(\$data); open FILE, "<${testfile}_5" or die "Cannot open ${testfile}_5"; $content = join '', <FILE>; close FILE; is($content, "This is a nice header.\n", "header_text"); # same with syswrite unlink "${testfile}_5"; $data = qq( log4perl.category = DEBUG, Logfile log4perl.appender.Logfile = Log::Log4perl::Appender::File log4perl.appender.Logfile.filename = ${testfile}_5 log4perl.appender.Logfile.header_text = This is a nice header. log4perl.appender.Logfile.syswrite = 1 log4perl.appender.Logfile.layout = Log::Log4perl::Layout::SimpleLayou +t log4perl.appender.Logfile.mode = clobber ); Log::Log4perl->init(\$data);

        I made mistakes on the way to get this, in particular changing the critical line

         log4perl.appender.Logfile.mode = clobber

        in Log4perl.pm . I've always wondered how to make changes in the .pm's that are installed on my machine. It seemed like the wrong way to have to change permissions on the file, but I did it, because, hey, we're using force here, right? I added the line and summarily got an error when opening a cpan client window.

        After patching the right file and executing:

        C:\Users\tblaz\Documents\evelyn\my_repos\Log-Log4perl-1.49>cpanm . --> Working on . Configuring Log-Log4perl-1.49 ... OK Building and testing Log-Log4perl-1.49 ... OK Successfully installed Log-Log4perl-1.49 1 distribution installed C:\Users\tblaz\Documents\evelyn\my_repos\Log-Log4perl-1.49>

        , Log4perl.pm was restored to what it was before I started messing with it. I still get a complaint about the Terminal Size, but there is no mention of Log4perl being uninstalled:

        Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call + didn't work. The COLUMNS and LINES environment variables didn't work +. at C:\Strawberry\perl\vendor\lib/Term/ReadLine/readline.pm line 410 +. cpan shell -- CPAN exploration and modules installation (v2.26) Enter 'h' for help. cpan>

        Thanks all for comments,