# open xml file to write
open(FIL,">../pub/database.xml");
####
my $img_dir = '../images';
opendir HOMEDIR, $img_dir or die "opendir failed: $!\n";
my @filenames = readdir HOMEDIR;
closedir HOMEDIR or die "closedir failed: $!\n";
open FIL, '>', '../pub/database.xml' or die "open failed: $!\n";
flock( FIL, 2 ) or die "flock failed: $!\n";
print FIL <
EOXML
{
my $path_to_imgs = '/images';
my @f = @filenames; # @f will be destroyed
my $t = 1;
use HTML::Entities;
for my $filename ( map encode_entities( $_ ),
grep s/\.jpg$//i, @f ) {
print FIL qq( \n);
$t++;
}
}
print FIL "\n";
flock FIL, 8 or die "flock failed: $!\n";
close FIL or die "close failed: $!\n";
####
{
my ( $re, %c2e, $num_ent );
INIT {
%c2e =
(
'&' => 'amp' ,
'>' => 'gt' ,
'<' => 'lt' ,
'"' => 'quot',
"'" => 'apos',
);
$re = qr/[^\n\r\t !\#\$%\(-;=?-~]/;
$num_ent = sub { sprintf '#x%X', ord( $_[ 0 ] ) };
}
sub encode_entities {
my $string = shift;
$string =~ s/($re)/sprintf '&%s;', $c2e{$1} || $num_ent->( $1 )/ge;
return $string;
}
}