当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 15 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 死活去不掉空行的pl。谁试试。
帖子发表于 : 2008-04-05 1:36 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
#!/usr/bin/perl -w

$home=$ENV{HOME};

#~/.config/rox.sourceforge.net/ROX-Filer/Bookmarks.xml
#<bookmark title="/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x7535;&#x5F71;">/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x7535;&#x5F71;</bookmark>
print "=====rox书签\n";
if (open(BM, "$home/.config/rox.sourceforge.net/ROX-Filer/Bookmarks.xml")) {
while ($line = <BM>) {
if ($line =~ /title/){
$line =~ s/<[^>]*>/\n/g;
$line =~ s/&#x([[:xdigit:]]+);/chr(hex($1))/ge;
$line =~ s/^$home/~/mg;
# $line =~ s/^\s*//mg;
# $line =~ s/\s*$//mg;
# $line =~ s/[\x0A]+/\n/mg;
$line =~ s/^\s*$//mg;
print $line;
}
if (eof) {close (BM);last;}
}
}


_________________
● 鸣学


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-04-06 12:38 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
☎ cat ~/.config/rox.sourceforge.net/ROX-Filer/Bookmarks.xml
<?xml version="1.0"?>
<bookmarks>
<bookmark title="/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x7535;&#x5F71;">/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x7535;&#x5F71;</bookmark>
<bookmark title="/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x97F3;&#x4E50;">/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x97F3;&#x4E50;</bookmark>
<bookmark title="/home/exp/&#x4E0B;&#x8F7D;">/home/exp/&#x4E0B;&#x8F7D;</bookmark>
<bookmark title="/home/media">/home/media</bookmark>
<bookmark title="/home/exp/&#x5E94;&#x7528;/&#x811A;&#x672C;">/home/exp/&#x5E94;&#x7528;/&#x811A;&#x672C;</bookmark>
<bookmark title="/home/exp/.fvwm">/home/exp/.fvwm</bookmark>
<bookmark title="/media">/media</bookmark>
<bookmark title="/home/exp/&#x6587;&#x6863;/&#x8BBE;&#x8BA1;&#x8D44;&#x6599;/&#x745E;&#x8428;">/home/exp/&#x6587;&#x6863;/&#x8BBE;&#x8BA1;&#x8D44;&#x6599;/&#x745E;&#x8428;</bookmark>
<bookmark title="/home/exp/project/easy-account">/home/exp/project/easy-account</bookmark>
<bookmark title="/home/exp/&#x4E0B;&#x8F7D;/torrent-files">/home/exp/&#x4E0B;&#x8F7D;/torrent-files</bookmark>
<bookmark title="/home/media/&#x25CF;&#x52A8;&#x753B;">/home/media/&#x25CF;&#x52A8;&#x753B;</bookmark><bookmark title="/home/exp/&#x5A92;&#x4F53;/&#x623F;&#x5C4B;&#x88C5;&#x9970;&#x56FE;&#x7247;">/home/exp/&#x5A92;&#x4F53;/&#x623F;&#x5C4B;&#x88C5;&#x9970;&#x56FE;&#x7247;</bookmark><bookmark title="/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x56FE;&#x6807;">/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x56FE;&#x6807;</bookmark><bookmark title="/usr/local/bin">/usr/local/bin</bookmark><bookmark title="/home/exp/test test">/home/exp/test test</bookmark></bookmarks>


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-04-06 14:16 
头像

注册: 2007-02-27 21:47
帖子: 1473
地址: GL
送出感谢: 0 次
接收感谢: 0 次
只是为了在console中显示的话,忽略空行就行了吧


_________________
Intel Pentium Dual Core 2.1G, 250G, DDRII 3G, ATI Radeon HD 4330
LMDE


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-04-06 17:26 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
空行是正则产生的。为了后面的处理,最好是去掉。可$line =~ s/^\s*$//mg; 就是去不掉。
另外的2个文件,也类似操作,这样一行就去掉了。
管道挂sed,用/^\s*$/d就去掉了。只是不想这样。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-04-06 21:31 
头像

注册: 2007-02-27 21:47
帖子: 1473
地址: GL
送出感谢: 0 次
接收感谢: 0 次
这一行
代码:
$line =~ s/<[^>]*>/\n/g;

改成
代码:
$line =~ s/<[^>]*>//g;

如何


_________________
Intel Pentium Dual Core 2.1G, 250G, DDRII 3G, ATI Radeon HD 4330
LMDE


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-04-06 23:36 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
有一个你没想到的事情。就是那xml文件的最后一行,是几个标识连一起的。如果这样,就后面的路径都放一行了。
这种不规范,应该是系统造成的。我只好迁就他。

:lol:
你可以试试2楼的xml。1楼的pl改这xml的地址,就知道了。


_________________
● 鸣学


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-04-07 8:40 
头像

注册: 2007-02-27 21:47
帖子: 1473
地址: GL
送出感谢: 0 次
接收感谢: 0 次
这个怎样
代码:
#!/usr/bin/perl -w

$home=$ENV{HOME};

#~/.config/rox.sourceforge.net/ROX-Filer/Bookmarks.xml
#<bookmark title="/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x7535;&#x5F71;">/home/exp/&#x5A92;&#x4F53;/&#x25CF;&#x7535;&#x5F71;</bookmark>
print "=====rox书签\n";
if (open(BM, "$home/.config/rox.sourceforge.net/ROX-Filer/Bookmarks.xml")) {
local $/=undef;
$line = <BM>;
$line =~ s/<[^>]*>/\n/g;
$line =~ s/&#x([[:xdigit:]]+);/chr(hex($1))/ge;
$line =~ s/^\s*$//mg;
$line =~ s/\n+/\n/mg;
print $line;
}


_________________
Intel Pentium Dual Core 2.1G, 250G, DDRII 3G, ATI Radeon HD 4330
LMDE


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-04-07 9:15 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
local $/=undef; 是什么意思啊。没懂。这样 $line = <BM>; 读入了全部?那不是可以@line读入了。这样全部一起处理的,正常多了。

print行,老出这提示。你知道为什么吗
Wide character in print at t.pl line 15, <BM> chunk 1.

另外,你能帮忙写一个针对2楼xml的XML::Simple或者Twing的例子不。 :lol:


_________________
● 鸣学


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-04-07 9:47 
头像

注册: 2007-02-27 21:47
帖子: 1473
地址: GL
送出感谢: 0 次
接收感谢: 0 次
$/ - The input record separator, newline by default.

引用:
这样 $line = <BM>; 读入了全部?那不是可以@line读入了。这样全部一起处理的,正常多了。

是可以

引用:
print行,老出这提示。你知道为什么吗
Wide character in print at t.pl line 15, <BM> chunk 1.

意思是Perl遇到了>255的字符,可以在脚本中加入一行
代码:
binmode STDOUT, ':utf8';


_________________
Intel Pentium Dual Core 2.1G, 250G, DDRII 3G, ATI Radeon HD 4330
LMDE


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-04-07 9:57 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
pl还是晦涩啊。没看过的东西,完全是晕的。

那XML的模块,拜托写一个哦。例子而已。

:em42 :em42


_________________
● 鸣学


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-04-07 13:06 
头像

注册: 2007-02-27 21:47
帖子: 1473
地址: GL
送出感谢: 0 次
接收感谢: 0 次
我水平很一般的,写脚本时也经常要看perldoc或上网搜 :oops:


_________________
Intel Pentium Dual Core 2.1G, 250G, DDRII 3G, ATI Radeon HD 4330
LMDE


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-04-09 9:09 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
可惜啊。论坛少有喜欢perl的。也没#perl-cn的irc。奇怪了。几次到#perl问,都是说一大堆,最终别人都推荐用模块。其实我不喜欢一个小事,也用模块。写的东西,不通用了。


_________________
● 鸣学


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-04-09 9:44 
头像

注册: 2007-02-27 21:47
帖子: 1473
地址: GL
送出感谢: 0 次
接收感谢: 0 次
我有时就是喜欢reinvent the wheel
一方面可以自己学到东西 同时更适合自己的特殊需要


_________________
Intel Pentium Dual Core 2.1G, 250G, DDRII 3G, ATI Radeon HD 4330
LMDE


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-04-09 10:20 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
其实。perl是太成熟了。没东西搞了。什么样的脚本,都有。别人早发布了。等我想搞的时候,找不到和我一样档次的。呵呵。

yaoms才找了一个irssi的osd显示的脚本。都现成的。他改了一个很简单的。


_________________
● 鸣学


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-04-09 12:39 
头像

注册: 2007-02-27 21:47
帖子: 1473
地址: GL
送出感谢: 0 次
接收感谢: 0 次
是呀 正因为已经非常成熟 所以除了CPAN还有丰富的支持 想解决什么问题的话 到网上google一下很快搞定


_________________
Intel Pentium Dual Core 2.1G, 250G, DDRII 3G, ATI Radeon HD 4330
LMDE


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 15 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译