博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Perl语言入门-第九章-用正则表达式处理文本-习题
阅读量:5945 次
发布时间:2019-06-19

本文共 3789 字,大约阅读时间需要 12 分钟。

1. 题目

   

   

2. 代码与输出   

 1 
#
-----------------------------------------------------------#
 2 
# Source: Learning Perl, chapter9,exercise-1
 3 
# Date:   2012-01-19
 4 
# Author: xiaodongrush
 5 
#-----------------------------------------------------------#
 6 
use 
5.010;
 7 
@array = qw {
 8   fredfredfred
 9   fredfredbarney
10   barneyfredfred
11   barneybarneybarney
12   fred|barney
13 };
14 
@content = qw {
15   fred fred|barney
16 };
17 
foreach 
$what(
@content) {
18   say 
"
\$what = $what
";
19   say 
"
\@array = (@array)
";
20   
foreach 
$text(
@array) {
21     
if(
$text =~ m/(?:
$what){
3}/) {
22       say 
"
<$`><$&><$'>
";
23     }
24   }
25   say 
"
----------------------------
";
26 }
27 <STDIN>;
28 
#
-----------------------------------------------------------#
29 
# 将某个字符串重复3次,注意这个字符串可能包含或|这样的字符,因此将其用括号
30 
# 括起来就好了
31 
#-----------------------------------------------------------#

 1 
#
-----------------------------------------------------------#
 2 
# Source: Learning Perl, chapter9,exercise-2
 3 
# Date:   2012-01-19
 4 
# Author: xiaodongrush
 5 
#-----------------------------------------------------------#
 6 
use 
5.010;
 7 
$input_file = 
$ARGV[
0];
 8 
$output_file = 
$ARGV[
0] . 
"
.out
";
 9 
unless(!
open IN, 
"
<$input_file
") {
10   say 
"
Can't read <$input_file> !
";
11 }
12 
unless(
open OUT, 
"
>$output_file
") {
13   say 
"
Can't write <$output_file> !
";
14 }
15 
while(<IN>) {
16   s/Fred/Larry/gi;
17   
print OUT 
$_;
18 }
19 
#
-----------------------------------------------------------#
20 
# 只读<,只写>,追加写>>,默认就是读写
21 
#-----------------------------------------------------------#

 1 
#
-----------------------------------------------------------#
 2 
# Source: Learning Perl, chapter9,exercise-3
 3 
# Date:   2012-01-19
 4 
# Author: xiaodongrush
 5 
#-----------------------------------------------------------#
 6 
use 
5.010;
 7 
$text = 
"
fred&wilma&fred&wilma&fred&wima
";
 8 say 
"
text = $text
";
 9 
@array = 
split /fred/gi, 
$text;
10 
foreach(
@array) {
11   s/wilma/Fred/gi;
12 }
13 
$text = 
join Wilma, 
@array;
14 say 
"
text = $text
";
15 <STDIN>;
16 
#
-----------------------------------------------------------#
17 
#1.该解法是用Fred作为分割符,将字符串分开,然后,将分开的
18 
#  字符串中的wilma环卫Fred,然后再用Wilma将分开的字符串连起来
19 
#2.书中解法是,首先对字符串chomp,保证不含\n,然后将Fred都换为
20 
#  \n,接着讲Wilma都换为Fred,最后将\n都换为Wilma
21 
#-----------------------------------------------------------#

 

 1 
#
-----------------------------------------------------------#
 2 
# Source: Learning Perl, chapter9,exercise-4
 3 
# Date:   2012-01-19
 4 
# Author: xiaodongrush
 5 
#-----------------------------------------------------------#
 6 
use 
5.010;
 7 $^I = 
"
.bak
";
 8 
$text = 
"
## Copyright (C) 2012 by Yours Truly\n
";
 9 
while(<>) {
10   
if(/
#
!/) {
11 
    
$_ = 
$_ . 
$text;
12   }
13   
print 
$_;
14 }
15 
#
-----------------------------------------------------------#
16 
# 1. /i表示忽略大小写,/g表示全局匹配
17 
# 2. $^I,在读入文件假设是word.txt,首先将其改名为word.txt.out,
18 
#    然后创建一个空的word.txt文件,接着,word.txt.out的每一行,
19 
#    并且通过print函数写入到word.txt文件中。
20 
#-----------------------------------------------------------#

 1 
#
-----------------------------------------------------------#
 2 
# Source: Learning Perl, chapter9,exercise-4
 3 
# Date:   2012-01-19
 4 
# Author: xiaodongrush
 5 
#-----------------------------------------------------------#
 6 
use 
5.010;
 7 
$text = 
"
## Copyright (C) 2012 by Yours Truly\n
";
 8 
foreach(
@ARGV) {
 9   
$files{
$_} = 
1;
10 }
11 
while(<>) {
12   
if(/
#
# Copyright/) {
13 
    
delete 
$files{
$ARGV};
14   }
15 }
16 
@ARGV = 
keys 
%files;
17 $^I = 
"
.bak
";
18 
if(
@ARGV != 
0) {
19   
while(<>) {
20     
if(/
#
!/) {
21 
      
$_ = 
$_ . 
$text;
22     }
23     
print 
$_;
24   }
25 }
26 
#
-----------------------------------------------------------#
27 
# 1. /i表示忽略大小写,/g表示全局匹配
28 
# 2. $^I,在读入文件假设是word.txt,首先将其改名为word.txt.out,
29 
#    然后创建一个空的word.txt文件,接着,word.txt.out的每一行,
30 
#    并且通过print函数写入到word.txt文件中。
31 
#-----------------------------------------------------------#

输出略,与前一题类似。

3. 文件

   

转载地址:http://flwxx.baihongyu.com/

你可能感兴趣的文章
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
查看>>
java之ibatis数据缓存
查看>>
“TNS-03505:无法解析名称”问题解决一例
查看>>
LeetCode - Longest Common Prefix
查看>>
Android图片处理
查看>>
2015年第21本:万万没想到,用理工科思维理解世界
查看>>
大家谈谈公司里的项目经理角色及职责都是干什么的?
查看>>
剑指offer
查看>>
Velocity魔法堂系列二:VTL语法详解
查看>>
NopCommerce架构分析之八------多语言
查看>>
转:Eclipse自动补全功能轻松设置
查看>>
ES6新特性:Javascript中的Reflect对象
查看>>
hibernate逆向工程生成的实体映射需要修改
查看>>
mysql update操作
查看>>
Robots.txt - 禁止爬虫(转)
查看>>
MySQL数据库
查看>>
项目分析_xxoo-master
查看>>
SQLServer2012自增列值跳跃的问题
查看>>
ViewBag对象的更改
查看>>
Mysql 监视工具
查看>>