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

Reply via email to