国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Perl > 正文

Perl 批量添加Copyright版權(quán)信息的方法

2020-02-23 19:44:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

我們?cè)谏虡I(yè)開(kāi)發(fā)中使用intellij思想時(shí),通常需要在代碼中添加版權(quán)聲明信息,并添加注釋信息來(lái)創(chuàng)建類(lèi)和方法,以便于生成相應(yīng)的注釋文檔或其他人閱讀的代碼。本文介紹了Perl 批量添加Copyright版權(quán)信息的方法,一起跟著愛(ài)情技術(shù)頻道小編來(lái)看看吧!

開(kāi)始我使用如下程序(嘗試前千萬(wàn)先備份輸入的文件):

#!usr/bin/perl -w$^I = ".bak";my %do_these;foreach (@ARGV){  print $_; $do_these{$_} = 1;}while(<>){ if(/^## Copyright/){  delete $do_these{$ARGV}; }}@ARGV = sort keys %do_these;while(<>){ if(/^#!/){  $_ .= "## Copyright (C) 2011 by yujianjun"; } print;}

結(jié)果:原文件和備份文件全部空白,真是糟糕。(切記以后測(cè)試程序時(shí),要做好備份)。
分析原因:

主要是由于$^I使用錯(cuò)誤。先來(lái)看看關(guān)于$^I的運(yùn)作原理:

$^I 默認(rèn)值undef,這不會(huì)影響程序。如果將其賦值為某個(gè)字符串(如程序中的".bak"),程序?qū)?zhí)行備份操作,并將該字符串添加到原文件名后面,成為備份文件名的拓展名。使用鉆石操作符打開(kāi)文件時(shí),perl的操作是,先將打開(kāi)的文件名改成加了拓展名的文件名,然后再新建一個(gè)原來(lái)的文件名的文件,然后在程序一行行讀入文件內(nèi)容并做一些改動(dòng)后,會(huì)保存到新文件中去。這樣就相當(dāng)于修改了文件內(nèi)容,并將老文件進(jìn)行了備份。當(dāng)然,如果值是undef,則不會(huì)備份舊文件。

由于上面程序中將$^I = ".bak";放在最前面,但后面有兩次讀取文件操作。假設(shè)讀入文件為file.pl,第一次while(<>)將原文件變成了file.pl.bak。然后新建一個(gè)空文件命名為file.pl;但新文件只有程序結(jié)束的時(shí)候才會(huì)寫(xiě)入磁盤(pán)中,所以接下來(lái)第二次讀取文件操作while(<>)時(shí),將會(huì)把空白的file.pl變成file.pl.bak,這樣就覆蓋了第一次的備份文件,然后再新建一個(gè)新的空白文件file.pl,此時(shí),包括原文件和備份文件內(nèi)容都是空白。

理解了$^I的工作原理,程序就很容易修改了:

只需將$^I = ".bak";放到最后一個(gè)文件讀取操作while(<>)之前就好了,如下:

#!usr/bin/perl -wmy %do_these;@ARGV = ("sinx.pl","nvidia.pl","changeName.pl");foreach (@ARGV){  print $_; $do_these{$_} = 1;}while(<>){ if(/^## Copyright/){  delete $do_these{$ARGV}; }}@ARGV = sort keys %do_these;$^I = ".bak";while(<>){ if(/^#!/){  $_ .= "## Copyright (C) 2011 by yujianjun"; } print;}

通過(guò)本文的介紹,你對(duì)Perl 批量添加Copyright版權(quán)信息的方法有所了解了嗎?大家要靜下心好好學(xué)習(xí)技術(shù),才能在這方面創(chuàng)造價(jià)值,更多的精彩內(nèi)容盡在武林技術(shù)頻道!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 白河县| 徐水县| 横山县| 巴里| 桃江县| 珠海市| 兰考县| 淅川县| 镇安县| 河间市| 穆棱市| 沅江市| 泸州市| 青河县| 治县。| 绍兴市| 盘山县| 榆树市| 日喀则市| 渝北区| 静宁县| 九台市| 博湖县| 西宁市| 通江县| 额济纳旗| 尉氏县| 景宁| 高安市| 万山特区| 白山市| 来凤县| 湟中县| 张家口市| 潞城市| 松江区| 乌鲁木齐县| 黄大仙区| 中卫市| 五莲县| 边坝县|