2009年1月4日星期日

[PerlChina] Re: perl读取access数据库时由于值里包含windows路径的"\"导致的问题

>
> while ( $ary_ref = $sth->fetchrow_arrayref) {
>
> print FILE1 ("$ary_ref->[0] : $ary_ref->[1] : $ary_ref->[2] \n";
> print FILE1 ("$ary_ref->[0] \n";
> }
>
> 当运行的时候报告错误:
>
> DBD::ODBC::st fetchrow_arrayref failed: [Microsoft][ODBC Microsoft
> Access Driver
> ]字符串数据,右截断 在列号 3 (CopyDetail) (SQL-01004) at D:\jk\test1.pl line 31.
>
> [Microsoft][ODBC Microsoft Access Driver]字符串数据,右截断 在列号 3 (CopyDetail
> ) (SQL-01004) at D:\jk\test1.pl line 39.
>
>
> 我检查后发现,是由于第三列内容包含windows路径的"\"导致的,当运行到 while ( $ary_ref = $sth-
>> fetchrow_arrayref )的时候,就开始报告错误
>
> 请问各位,我该怎么做才能使perl正确读取"\"字符呢。
>

在你决定是 \ 的问题前,建议再仔细的 debug 一下。例如通过 use Data::
Dumer, 在每次循环时都 print Dumper $ary_ref;看看你的程序是否运行到这一
步,得到的结果是否正常。

另外也建议读一下这篇 debug 文章
http://wiki.perlchina.org/index.php/Brian%27s_Guide_to_Solving_Any_Perl_Problem

Qiang(James)

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: perl读取access数据库时由于值里包含windows路径的"\"导致的问题

你确定你这是由于路径问题造成的。如果是,那你可以试试File::spec->catfile($dirName,$fileName);这个函数会组成一个文件的全路径,他会根据操作系统来决定使用那个分隔符。

2009/1/4 大大 <xiaozuovip@gmail.com>
环境:

perl读取access数据库

使用DBI建立连接:

my $DSN = "driver=Microsoft Access Driver (*.mdb);dbq=d:\\jk\
\test.mdb";
my $dbh = DBI->connect("dbi:ODBCDSN",'','ytwk')
or die "Can't connect to Database: $DBI::errstr";

读取记录:

my $sth = $dbh->prepare( q{
         SELECT * FROM testDB
}) or die "Can't prepare statement: $DBI::errstr";
my $rc = $sth->execute
or die "Can't execute statement: $DBI::errstr";

显示出前三列:

print "Query will return $sth->{NUM_OF_FIELDS} fields.\n\n";

print "Field names: @{ $sth->{NAME} } \n";

my  $ary_ref;

open (FILE1, ">a.txt";

while ( $ary_ref = $sth->fetchrow_arrayref) {

print FILE1 ("$ary_ref->[0] : $ary_ref->[1] : $ary_ref->[2] \n";
print FILE1 ("$ary_ref->[0] \n";
}


当运行的时候报告错误:

DBD::ODBC::st fetchrow_arrayref failed: [Microsoft][ODBC Microsoft
Access Driver
]字符串数据,右截断 在列号 3 (CopyDetail) (SQL-01004) at D:\jk\test1.pl line 31.

[Microsoft][ODBC Microsoft Access Driver]字符串数据,右截断 在列号 3 (CopyDetail
) (SQL-01004) at D:\jk\test1.pl line 39.


我检查后发现,是由于第三列内容包含windows路径的"\"导致的,当运行到 while ( $ary_ref = $sth-
>fetchrow_arrayref )的时候,就开始报告错误

请问各位,我该怎么做才能使perl正确读取"\"字符呢。




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

[PerlChina] perl读取access数据库时由于值里包含windows路径的"\"导致的问题

环境:

perl读取access数据库

使用DBI建立连接:

my $DSN = "driver=Microsoft Access Driver (*.mdb);dbq=d:\\jk\
\test.mdb";
my $dbh = DBI->connect("dbi:ODBCDSN",'','ytwk')
or die "Can't connect to Database: $DBI::errstr";

读取记录:

my $sth = $dbh->prepare( q{
SELECT * FROM testDB
}) or die "Can't prepare statement: $DBI::errstr";
my $rc = $sth->execute
or die "Can't execute statement: $DBI::errstr";

显示出前三列:

print "Query will return $sth->{NUM_OF_FIELDS} fields.\n\n";

print "Field names: @{ $sth->{NAME} } \n";

my $ary_ref;

open (FILE1, ">a.txt";

while ( $ary_ref = $sth->fetchrow_arrayref) {

print FILE1 ("$ary_ref->[0] : $ary_ref->[1] : $ary_ref->[2] \n";
print FILE1 ("$ary_ref->[0] \n";
}


当运行的时候报告错误:

DBD::ODBC::st fetchrow_arrayref failed: [Microsoft][ODBC Microsoft
Access Driver
]字符串数据,右截断 在列号 3 (CopyDetail) (SQL-01004) at D:\jk\test1.pl line 31.

[Microsoft][ODBC Microsoft Access Driver]字符串数据,右截断 在列号 3 (CopyDetail
) (SQL-01004) at D:\jk\test1.pl line 39.


我检查后发现,是由于第三列内容包含windows路径的"\"导致的,当运行到 while ( $ary_ref = $sth-
>fetchrow_arrayref )的时候,就开始报告错误

请问各位,我该怎么做才能使perl正确读取"\"字符呢。

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: 提问:windows环境下perl编程环境的搭建

对,再用unxutils+mingw+gunbash 完全可以代替这个大块头cygwin
PS, UNXUTILS里也有一个wperl.exe的东东,做一些小东西,完全够了


yd.li
20090104

-----Original Message-----
From: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] On
Behalf Of chunlin
Sent: 2009年1月4日 星期日 11:09
To: PerlChina 论坛
Subject: [PerlChina] Re: 提问:windows环境下perl编程环境的搭建

mingw 比 cygwin 好用,推荐这个的说.

On 1月2日, 下午2时34分, agentzh <agen...@gmail.com> wrote:
> 2009/1/2 zhouJinfeng <bun...@hotmail.com>
>
> > *Hi, Friends*
> > **
> > *偶想建立perl的编程环境ActiveState Perl + Cygwin Bash Shell + Emacs*
> > *有人提到若要使ActiveState Perl运行在Cygwin Bash Shell 中要写人个脚本来
连接Cygwin Bash
> > Shell中直接运行perl*
>
> 最好不要这么玩儿...呵呵,我和 Audrey 就曾给 Cygwin 玩死了,呵呵.Cygwin 中对
路径的解释会让 Win32
> native
> 的程序感到很困惑.所以需要为 ActivePerl 写一个 wrapper 完成对路径等一系列资
源的转换(好在 Cygwin
> 本身提供了一系列辅助的工具).
>
> > *。*
> > *问题是:*
> > *1,如何将两个工具连接在一起么?脚本如何写?*
>
> 这个...我没写过...呵呵
>
> > **
> > *2,搭建好后在Emacs中写Perl脚本,第一句子指向Perl的地址是*
> > /usr/local/bin/perl,还是c:/programs/perl/bin/perl
>
> 我们一般在 shebang 那一行写 #!/usr/bin/env cygperl 这样可以在 PATH 中找我
们的包裹后的
> ActivePerl,即
> cygperl. 不过我在 Cygwin 中没有试过,可以试一下.呵呵.
>
> Good luck!
> -agentzh


--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: bbs.perlchina.org上的数据会移到googlegroups.com来吗?

2009/1/4 大明 <addmyin@gmail.com>:
> 那管理员得写脚本导入了。^^
>

而且还是 Perl 脚本?哈哈?

-agentzh

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: bbs.perlchina.org上的数据会移到googlegroups.com来吗?

那管理员得写脚本导入了。^^

2009/1/4 purl lamp <lamp.purl@gmail.com>:
> 老的东西就让它留在老地方好了,精华部分不如整理到 wiki 里面去?
>
> 2009/1/4 Ken Lam <bi.ken.lam@gmail.com>
>>
>> 如题
>>
>> --
>> Perl乐事 -- http://www.perlersh.org
>>
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

[PerlChina] Re: Perl GUI 编程学习

2009/1/4 Ken Lam <bi.ken.lam@gmail.com>:
> 一直希望GUI可以是HTML BASE的,然后通过JAVASCRIPT事件响应,调用相应的主体代码。但又不想是agent说的带DAEMON的方式。
>

不带 deamon 可以做成 XUL Runner 上跑的应用,或者做成 Firefox 插件呀,呵呵.

Best,
-agentzh

P.S. 休完假后我也准备为我的 XUL::App 框架添加对 XUL Runner 的支持了,呵呵. 对 Win32 开发的支持也是一个重要的 TODO :)

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---