Learning Perl學(xué)習(xí)筆記(4)第五章 Input and Output

課后練習(xí)

第一題

Write a program that acts like cat, but reverses the order of the output lines.
(Some systems have a utility like this named tac.) If you run yours as ./tac fred
barney betty, the output should be all of file betty from last line to first, then
barney, and then fred, also from last line to first. (Be sure to use the ./ in your
program’s invocation if you call it tac so that you don’t get the system’s utility
instead!)

這里先隨便創(chuàng)建3個文本文件,分別命名為:fred,barney,betty,里面的內(nèi)容分別是:

$ cat fred
Hello ! My name is Fred.
I am a student.
I am a boy.

$ cat barney
Hello ! My name is Barney.
I am a doctor.
I am a girl.

$ cat betty
Hello ! My name is Betty.
I am a dancer.
Nice to meet you.

題目要求分別按反向的順序輸出文本內(nèi)容秕磷,并且每一個文本里的內(nèi)容也要從最后一行輸出但荤,腳本如下:

#!/usr/bin/perl
use warnings;
use strict;
use v5.24;

print reverse <>;

運行結(jié)果:

$ ./practice1.pl fred barney betty
Nice to meet you.
I am a dancer.
Hello ! My name is Betty. #這三行是betty文本的內(nèi)容
I am a girl.
I am a doctor.
Hello ! My name is Barney.#這三行是barney文本內(nèi)容
I am a boy.
I am a student.
Hello ! My name is Fred.#這三行是fred文本內(nèi)容

第二題

Write a program that asks the user to enter a list of strings on separate lines,
printing each string in a right-justified, 20-character column. To be certain that the output is in the proper columns, print a “ruler line” of digits as well. (This is simply a debugging aid.) Make sure that you’re not using a 19-character column
by mistake! For example, entering hello, good-bye should give output something
like this:


腳本:

#!/usr/bin/perl
use warnings;
use strict;
use v5.24;

print "Please enter some strings, then press ctrl_D:\n";

chomp(my @line=<STDIN>); #這里必須是用數(shù)組@去件,如果用$來定義腰素,輸入一行字符回車后匙监,就自動彈出結(jié)果了琐馆,而不是輸入多行的形式
print (("1234567890" x 7)."\n");
foreach (@line) {
        printf "%20s\n",$_; 
}

運行結(jié)果:

$ ./practice1.pl
Please enter some strings, then press ctrl_D:
hello #輸入第一行龟再,回車
good-bye #輸入第二行,回車审胸,ctrl+D亥宿,則彈出下面的結(jié)果
1234567890123456789012345678901234567890123456789012345678901234567890
               hello
            good-bye #彈出的結(jié)果一共占20個字符的位置,并進行右對齊砂沛,上面的數(shù)字是標尺

第三題

Modify the previous program to let the user choose the column width, so that
entering 30, hello, good-bye (on separate lines) would put the strings at the 30th
column. (Hint: see “Interpolation of Scalar Variables into Strings” on page 32,
about controlling variable interpolation.) For extra credit, make the ruler line
longer when the selected width is larger.

腳本:

#!/usr/bin/perl
use warnings;
use strict;
use v5.24;

print "Choose the column width:\n";
chomp (my $width = <STDIN>);

print "Please enter some strings, then press ctrl_D:\n";
chomp(my @line=<STDIN>);

print (("1234567890" x (($width+10)/10))."\n");
foreach (@line) {
        printf "%*s\n",$width,$_; #You can specify the width as one of the arguments. A * inside the format string takes the next argument as a width
}

運行結(jié)果:

$ ./practice1.pl
Choose the column width:
30
Please enter some strings, then press ctrl_D:
hello
good-bye
1234567890123456789012345678901234567890 #標尺按照輸入的字符串長度調(diào)整烫扼,這里你會發(fā)現(xiàn)這個標尺沒有上面一題的長
                         hello
                      good-bye
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市碍庵,隨后出現(xiàn)的幾起案子映企,更是在濱河造成了極大的恐慌,老刑警劉巖静浴,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堰氓,死亡現(xiàn)場離奇詭異,居然都是意外死亡苹享,警方通過查閱死者的電腦和手機双絮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來得问,“玉大人囤攀,你說我怎么就攤上這事」常” “怎么了焚挠?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長漓骚。 經(jīng)常有香客問我蝌衔,道長,這世上最難降的妖魔是什么蝌蹂? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任噩斟,我火速辦了婚禮,結(jié)果婚禮上叉信,老公的妹妹穿的比我還像新娘亩冬。我一直安慰自己,他們只是感情好硼身,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布硅急。 她就那樣靜靜地躺著,像睡著了一般佳遂。 火紅的嫁衣襯著肌膚如雪营袜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天丑罪,我揣著相機與錄音荚板,去河邊找鬼。 笑死吩屹,一個胖子當著我的面吹牛跪另,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播煤搜,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼免绿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了擦盾?” 一聲冷哼從身側(cè)響起嘲驾,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迹卢,沒想到半個月后辽故,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡腐碱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年誊垢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症见。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂走,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筒饰,到底是詐尸還是另有隱情缴啡,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布瓷们,位于F島的核電站业栅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谬晕。R本人自食惡果不足惜碘裕,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望攒钳。 院中可真熱鬧帮孔,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至姆坚,卻和暖如春澳泵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兼呵。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工兔辅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人击喂。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓维苔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懂昂。 傳聞我的和親對象是個殘疾皇子介时,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345