Chinaunix

标题: 用join拼接字符串有问题,请大侠看看 [打印本页]

作者: davieyan    时间: 2008-07-16 10:17
标题: 用join拼接字符串有问题,请大侠看看
我要把ip.txt的内容读出,再拼接成一条sql语句。但总是只输出ip.txt的内容,不知为什么,请高手指点指点!

!#/usr/bin/perl
open myfile,"ip.txt";

$sqlbegin == "insert into sevencai values(";
$sqlend == ");";

$linetxt = readline myfile;
$newsql = join $sqlbegin,$linetxt,$sqlend;
print $newsql;
作者: flw    时间: 2008-07-16 10:23
perldoc -f join
作者: ermu    时间: 2008-07-16 10:24
不用这么拼接吧,直接就用点号连接就行。

[ 本帖最后由 ermu 于 2008-7-16 10:34 编辑 ]
作者: zhangkeyijian    时间: 2008-07-16 10:25
$newsql = join "$sqlbegin",$linetxt,$sqlend;



EXPR与LIST区分一下
作者: davieyan    时间: 2008-07-16 11:18
原帖由 zhangkeyijian 于 2008-7-16 10:25 发表
$newsql = join "$sqlbegin",$linetxt,$sqlend;



EXPR与LIST区分一下



不行呀,如果写成$newsql = join “insert into sevencai values(",$linetxt,$sqlend;

打出来就成了  
张三,172.16.10.2
insert into sevencai values(

变成两行输出了
作者: davieyan    时间: 2008-07-16 11:25
原帖由 ermu 于 2008-7-16 10:24 发表
不用这么拼接吧,直接就用点号连接就行。



也不行,写成$newsql = "insert into sevencai values(".$linetxt.$sqlend;

输出是 insert into sevencai values(张三,172.16.10.2

写成 $newsql = "insert into sevencai values(".$linetxt.“);";

输出是 insert into sevencai values(张三,172.16.10.2
          );
是两行输出
作者: Cludy    时间: 2008-07-16 11:51
$linetxt = readline myfile;
$linetxt最后有换行符吧,
增加一句chomp($linetxt ),就不会出现换行的情况了吧!
作者: davieyan    时间: 2008-07-16 11:59
原帖由 Cludy 于 2008-7-16 11:51 发表
$linetxt = readline myfile;
$linetxt最后有换行符吧,
增加一句chomp($linetxt ),就不会出现换行的情况了吧!



好了,谢了!

但为什么用变量拼接有问题呢?
作者: Cludy    时间: 2008-07-16 12:14
!#/usr/bin/perl
open myfile,"ip.txt";

$sqlbegin = "insert into sevencai values(";
$sqlend = ");";

$linetxt = readline myfile;
chomp($linetxt);

$newsql = join '' ,$sqlbegin,$linetxt,$sqlend;
print $newsql;

试试这样的。
和你的对比一下。。
作者: davieyan    时间: 2008-07-16 13:06
原帖由 Cludy 于 2008-7-16 12:14 发表
!#/usr/bin/perl
open myfile,"ip.txt";

$sqlbegin = "insert into sevencai values(";
$sqlend = ");";

$linetxt = readline myfile;
chomp($linetxt);

$newsql = join '' ,$sqlbegin,$linetxt,$s ...



不行,这样只能打出 $linetxt
作者: davieyan    时间: 2008-07-16 13:20
明白了,字符串不能用==赋值。
另一个问题,我想读指定行号的一行文本,如何做
作者: Cludy    时间: 2008-07-16 13:31
$sqlbegin == "insert into sevencai values(";
$sqlend == ");";

<>

$sqlbegin = "insert into sevencai values(";
$sqlend = ");";

你是不是没有看到这里??
作者: davieyan    时间: 2008-07-16 13:35
是呀,我用了-w打印了调试信息才发现问题所在。
顺便再问下,我想读指定行号的一行文本,如何做




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2