#!/usr/bin/perl
use strict;
use warnings;
use 5.10.0;
use Fcntl qw( :flock );
use DB_File;
my $db_file = '/var/tmp/dbfile_test';
my $db_hash = get_db_hash( $db_file );
$db_hash->{ rand 100 } = time;
say for sort { uc $a cmp uc $b } keys %$db_hash;
say scalar keys %$db_hash;
exit;
{
my ( $dbobj, $dbfd, $dbfh, %dbhash );
sub get_db_hash
{
my $dbfile = shift @_;
$dbobj = tie %dbhash,
'DB_File',
$dbfile,
O_TRUNC | O_CREAT,
oct 644,
$DB_HASH
or die $!;
$dbfd = $dbobj->fd;
open $dbfh, '+<&=', $dbfd or die $!;
flock $dbfh, LOCK_EX | LOCK_NB or die $!;
return \%dbhash;
}
sub close_db_hash
{
flock $dbfh, LOCK_UN;
undef $dbobj;
untie %dbhash;
}
}
END { local $@ = undef; eval { close_db_hash() }; warn $@ if $@; }
__END__
use Modern::Perl;
use Excel::Writer::XLSX;
# Create a new Excel workbook
my $workbook = Excel::Writer::XLSX->new( 'hello_perl_spreadsheet.xlsx'
+ );
# Add a worksheet
my $worksheet = $workbook->add_worksheet();
# Add and define a format
my $format = $workbook->add_format();
$format->set_bold();
$format->set_color( 'red' );
$format->set_align( 'center' );
# Write a formatted and unformatted string, row and column notation.
my ( $col, $row ) = ( 0, 0 );
$worksheet->write( $row, $col, 'Hi Excel!', $format );
$worksheet->write( 1, $col, 'Hi Excel!' );
# Write a number and a formula using A1 notation
$worksheet->write( 'A3', 1.2345 );
$worksheet->write( 'A4', '=SIN(PI()/4)' );
my $data = [
[ 'Product', 'Q1', 'Q2', 'Q3', 'Q4' ],
[ 'Apples', 10000, 5000, 8000, 6000 ],
[ 'Pears', 2000, 3000, 4000, 5000 ],
[ 'Bananas', 6000, 6000, 6500, 6000 ],
[ 'Oranges', 500, 300, 200, 700 ],
];
$worksheet->add_table( 'B3:F8', { data => $data, autofilter => 1, head
+er_row =>
+1, banded_rows => 1 } );
say 'DONE';
exit;