What system, version of Excel? I’m using Mac Office on OS 10.9.5
Carl Furst From: Matthew Musgrove <mr.musk...@gmail.com<mailto:mr.musk...@gmail.com>> Date: Wednesday, February 25, 2015 at 2:31 PM Cc: Perl DBI mailing list <dbi-users@perl.org<mailto:dbi-users@perl.org>> Subject: Re: DBD::CSV 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<http://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<http://test.pl> at 18 $VAR1 = {}; HTH, Matt On Wed, Feb 25, 2015 at 11:25 AM, Furst, Carl <carl.fu...@mlb.com<mailto:carl.fu...@mlb.com>> 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 ********************************************************** MLB.com: Where Baseball is Always On