作者iloveyoungae (迷上西方天使)
看板Perl
标题Re: [问题] 除了关键字,其余改成大写
时间Mon Apr 26 18:14:17 2010
谢谢G大的帮忙
小弟後来的写法为
use strict;
open(open_file "02.txt") or "error file!!";
open(write_file, ">04.txt") or "error file!!";
my $rest;
while(<open file>)
{
chomp;
if ($_=~ /(\binput\b|\bmodule\b)(.*$)/i)
{
$rest=$2;
$rest=~ tr/a-z/A-Z;
print write_file "$1 $rest\n";
}
else
$_=~ tr/a-z/A-Z;
print write_file "$_","\n";
}
但是这个没有考虑到,如果在$2里面有keyword的情况
还是G大的写法,比较完善
谢谢
※ 引述《giacch (小a)》之铭言:
: ※ 引述《iloveyoungae (迷上西方天使)》之铭言:
: : 各位先辈大家好
: : 小弟最近开始练习一个题目
: : 读一个档案,将关键字以外的字串,都变成大写
: : 这是小弟的写法
: : use strict;
: : open(open_file "02.txt") or "error file!!";
: : open(write_file, ">04.txt") or "error file!!";
: : while(<open file>)
: : {
: : chomp;
: : if ($_ !~/input\s|module\s/i)
: : {
: : $_=~ tr/a-z/A-Z;
: : }
: : print write_file "$_","\n";
: : }
: : 但是结果出来,有点问题
: : module wait68k (lbus , lcs_n , mode_68k ,
: : IOIS16_N , PDOE , WE_N , LBUS_N , OE_N,
: : LOAD_N , MIIDIOEN1 , PDOE_N );
: : input lbus;
: : input lcs_n;
: : input mode_68k;
: : input iois16_n;
: : input pdoe;
: : input we_n;
: : input lbus_n;
: : input oe_n;
: : OUTPUT LOAD_N;
: : OUTPUT MIIDIOEN1;
: : OUTPUT PDOE_N;
: : 像是module跟input後面,应该要变成大写,却还是跟原本一样,没有改变
: : 请教 这个问题该怎麽处理
: : 谢谢
: #!/usr/bin/perl
: while(<DATA>) {
: # s/\w+/($& eq 'input' or $& eq 'module') ? $& : uc($&)/ge;
: foreach $s (/\w+/g) { $s=~/input|module/i or s/$s/uc($s)/e; }
: print;
: }
: __DATA__
: module wait68k (lbus , lcs_n , mode_68k ,
: iois16_n , pdoe , we_n , lbus_n , oe_n,
: load_n , miidioen1 , pdoe_n );
: input lbus;
: input lcs_n;
: input mode_68k;
: input iois16_n;
: input pdoe;
: input we_n;
: input lbus_n;
: input oe_n;
: output load_n;
: output miidioen1;
: output pdoe_n;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.220.246.245