Dear Monks

I have been busy with other things than coding, but the script is still bugging me.

Since I cannot change how people write their pathnames, I think I need to finish this coding project.

Well, I have been trying to implement the code that was provided by you via the link to the pathnames_under_windows_8 post.

Since I not could see a variable or anything related to path::tiny in the new snippet, I figured I just needed to put it into my code (cf. below). The files in the strangely named folders remain untouched though.

Is this topic covered elsewhere, maybe in a book or so, I really would like to understand the code properly but this is rather a conundrum and surely a bit too advanced for my puny perl skills.

Thanks a mil for your help

Kind regards

C

#!/usr/bin/perl -- use 5.014; use strict; use warnings; use Path::Tiny qw/ path /; use POSIX(); use autodie qw/ close /; use File::BOM; use Carp::Always; use Data::Dump qw/ dd /; Main( @ARGV ); exit( 0 ); BEGIN { if ( eval { require Win32; 1 } ) { require ex::override; require Win32::Unicode::Native; ex::override->import( GLOBAL_stat => sub (;*) { &Win32::Unicode::Native::stat }, GLOBAL_lstat => sub (;*) { &Win32::Unicode::Native::stat } +, map({ my $name = $_; my $prototype = prototype("CORE::$name"); "GLOBAL_$name" => eval "sub($prototype){&Win32::Un +icode::Native::$name}"; } qw/ chdir link mkdir open readlink rename rmdir symlink unlink utime closedir opendir readdir /, ) ); } } sub Main { #my( $infile_paths ) = @_; #if run via my( $infile_paths ) = 'C:\dev\test_paths_files.txt'; chomp $infile_paths; my @paths = GetPaths( $infile_paths ); for my $path ( @paths ){ RetrieveAndBackupXML( $path ); Win32Checker( $path ); } return @paths; } ## end sub Main sub GetPaths { use File::BOM; ## my @paths = path( shift )->lines_utf8; my @paths = path( shift )->lines( { binmode => ":via(File::BOM)" } + ); s/\s+$// for @paths; # "chomp" return @paths; } ## end sub GetPaths sub RetrieveAndBackupXML { my( $directory ) = shift; ## same as shift @_ ## my $date = POSIX::strftime( '%Y-%m-%d', localtime ); #suffix + for the backup-file, e.g. 2014-08-01 my $bak = "$date.bak"; my @xml_files = path( $directory )->children( qr/\.xml$/ ); for my $file ( @xml_files ) { Replace( $file, "$file-$bak" ); } } ## end sub Main # Fix xml entities and create a copy of the original file before editi +ng sub Replace { my( $in, $bak ) = @_; path( $in )-> copy( $bak ); #create a copy of $in with the ending( +s) specified in $bak my $infh = path( $bak )->openr_raw; my $outfh = path( $in )->openrw_raw; while( <$infh> ) { s{&}{&amp;}g; ## In some case does not match as intended s{&amp;amp;}{&amp;}g; s{\s>\s}{&gt;}g; s{\s<\s}{&lt;}g; print $outfh $_; } close $infh; close $outfh; } ## end sub Replace

In reply to Re^29: search and replace strings in different files in a directory by PitifulProgrammer
in thread search and replace strings in different files in a directory by PitifulProgrammer

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.