PCB论坛网

 找回密码
 注册
查看: 1141|回复: 3

[求助]Perl 问题请教!

[复制链接]
发表于 2005-6-11 06:58:24 | 显示全部楼层 |阅读模式

例如我需要从一个文件中取出一个变量,设置一个路径的做法如下:

$job_path = `dbutil path jobs $JOB`;

$job_path = "$job_path/user/panel.log"; 就在此处出现问题!!!

open (TMP,"cat $job_path |");

......

path 竟是这样的:/genesis/fw/jobs/000000 /user/panel.log

中间有一空格,怎么去掉中间的空格呢?

想了很多的办法未能解决,只有请教大家了!

回复

使用道具 举报

发表于 2005-6-13 00:01:10 | 显示全部楼层
以下是引用copper在2005-6-11 6:58:24的发言:

例如我需要从一个文件中取出一个变量,设置一个路径的做法如下:

$job_path = `dbutil path jobs $JOB`;

$job_path = "$job_path/user/panel.log"; 就在此处出现问题!!!

open (TMP,"cat $job_path |");

......

path 竟是这样的:/genesis/fw/jobs/000000 /user/panel.log

中间有一空格,怎么去掉中间的空格呢?

想了很多的办法未能解决,只有请教大家了!

試試split分割指令!!

my $string1 = (split (/\//,$path))[0]; my $string2 = (split (/\//,$path))[1];

my $new_path = "$string1"."$string2";

其中/\//表示將空格取代為沒有字元............

perl很好玩的..........並不是只有GUI,好玩是在於字串處理、CGI、資料庫.......[em05]

[此贴子已经被作者于2005-6-13 0:11:25编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-15 23:16:01 | 显示全部楼层
以下是引用mizuno在2005-6-13 0:01:10的发言:

試試split分割指令!!

my $string1 = (split (/\//,$path))[0]; my $string2 = (split (/\//,$path))[1];

my $new_path = "$string1"."$string2";

其中/\//表示將空格取代為沒有字元............

perl很好玩的..........並不是只有GUI,好玩是在於字串處理、CGI、資料庫.......[em05]

感谢斑竹的回复!

问题已经解决,我用chomp 去掉的,好像还有其他办法!

不过,有个新的问题想请教!

我有点不明白 chop , chomp 它们用法的差异,

chop 能够去掉末尾的换行符或最后的一个字符

例如:

$filename = "/tmp/log.txt";

open ( FILE,"$filename");

while (<FILE>) {

push(@file,$_);

}

我需要将@file的内容插入到一个文本列表里面,在windows机上,显示的内容是ok的,

但是当我在linux 机上显示的时候,出现了行末的换行符,

而且是用十六进制的ASCII码表示 “\x9a”

请问如何除掉一个文本文件中的换行符呢?

回复 支持 反对

使用道具 举报

发表于 2005-6-18 14:06:40 | 显示全部楼层
以下是引用copper在2005-6-15 23:16:01的发言:

感谢斑竹的回复!

问题已经解决,我用chomp 去掉的,好像还有其他办法!

不过,有个新的问题想请教!

我有点不明白 chop , chomp 它们用法的差异,

chop 能够去掉末尾的换行符或最后的一个字符

例如:

$filename = "/tmp/log.txt";

open ( FILE,"$filename");

while (<FILE>) {

push(@file,$_);

}

我需要将@file的内容插入到一个文本列表里面,在windows机上,显示的内容是ok的,

但是当我在linux 机上显示的时候,出现了行末的换行符,

而且是用十六进制的ASCII码表示 “\x9a”

请问如何除掉一个文本文件中的换行符呢?

你試試以下的語法.......

$filename = "/tmp/log.txt";

假設文件內容為:

#job_no 123ab-456a

#coupon 6

然後擷取出來:

open ( FILE,"$filename");

while (<FILE>) {

chomp;

if (/^#job_no/) { $inputdata = (split (/\s+/))[1]; } if (/^#coupon/) { $inputdata1 = (split (/\s+/))[1]; }

}

print "$inputdata $inputdata1\n";

重點還是在於split.......

至於chop跟chomp的差別,據我所知

chop目前已較少人用了(perl4版本的產物),現在都用chomp

功能說明:

chop會將那一行的最後一個字元刪除,不管是否為空白都會刪除!!有可能會刪除到變數值, 這個很危險,不要用!!

chomp將那一行的最後換行字元或空白刪除,若無換行字元或空白就不刪除,這個比較人性化!!

[em05]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|手机版|PCB设计论坛|EDA论坛|PCB论坛网 ( 沪ICP备05006956号-1 )

GMT+8, 2024-5-23 17:50 , Processed in 0.195597 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表