Carl,
When I tried it just now (first time using DBD::CSV) it just worked as I
would expect.
First, here's my script that I named test.pl:
#!/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use DBI;
use Try::Tiny qw( try catch );
my $dbh = DBI->connect( 'DBI:CSV:', '', '', {
f_schema => undef,
f_dir => '.',
f_ext => '.csv/r',
RaiseError => 1,
PrintError => 0,
}) or die "Cannot connect: $DBI::errstr";
my $test = try {
return $dbh->selectall_arrayref( 'select * from test' );
}
catch {
my $err = $_;
if ( $err =~ m!^.*DBD::CSV::db.*?Execution ERROR: (.*?) at
.*?DBI/DBD.*?line \d+.*?called from (.*? at \d+)\..*?$!s )
{
my ( $msg, $where ) = ( $1, $2 );
warn "$msg -- $where\n";
}
else
{
warn "$err\n";
}
return {};
};
print Dumper( $test );
__END__
Here is my test.csv file:
id,value
a,1
b,2
c,3
When I run it with test.csv (whether or not it is open in Excel) I get this
output:
$VAR1 = [
[
'a',
'1'
],
[
'b',
'2'
],
[
'c',
'3'
]
];
When I run it from a network drive I get this output:
Cannot obtain shared lock on /export/home/mmusgrove/test.
csv: No locks available -- ./test.pl at 18
$VAR1 = {};
HTH,
Matt
On Wed, Feb 25, 2015 at 11:25 AM, Furst, Carl <[email protected]> wrote:
> I think someone wrote about this before, but I just wanted to bring it up
> again.
>
> Is there a way to have DBD::CSV produce a warning or a message (like when
> printError and raise error is set) to say that it’s waiting for a file
> lock??
>
> For example if I’m using my oh so beloved MS Excel and it locks the csv
> file and at the same time I’m trying to also run my even more beloved perl
> script which is trying to open the file for read. The script of course
> hangs when trying to execute any statements because it’s waiting for the
> flock put there by MS Excel..Is there a lock timeout? Is that what f_lock
> => 2 is for??
>
> At least I’m pretty sure that’s what’s happening because when I open it in
> things that put the whole file into memory (like my other beloved text
> editor) I have no problem, but excel likes to lock things, it seems. When
> I close the file in Excel, of course, the perl runs like a charm.
>
> Thanks,
> Carl Furst
>
> **********************************************************
>
> MLB.com: Where Baseball is Always On
>