亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 大家寫過讀過的perl項目最多有多少行代碼 [打印本頁]

作者: vgra    時間: 2010-02-04 12:48
標(biāo)題: 大家寫過讀過的perl項目最多有多少行代碼
大家寫過、讀過的perl項目,最多的代碼有多少行呢,出來說說
我先說我寫的一個系統(tǒng),14000多行
作者: flw    時間: 2010-02-04 13:29
我可以把它刪減到 1400 行,你信不信?
作者: flw    時間: 2010-02-04 13:38
為了防止誤會,我再補(bǔ)充一下:
【代碼質(zhì)量只會比刪剪前更優(yōu)】
作者: DQP    時間: 2010-02-04 13:56
不明真相 過來圍觀.....
作者: hitsubunnu    時間: 2010-02-04 13:58
14000行里面

也許有1萬行是 html
作者: lth0721    時間: 2010-02-04 14:03
回復(fù) 2# flw


    ...
作者: alleva    時間: 2010-02-04 14:10
我可以把它刪減到 1400 行,你信不信?
flw 發(fā)表于 2010-02-04 13:29



    大俠能不能拋個代碼看看我好學(xué)習(xí)一下。謝謝flw斑竹。
作者: haolian102    時間: 2010-02-04 14:11
回復(fù) 5# hitsubunnu


    這種可能性很大...
作者: yybmsrs    時間: 2010-02-04 14:26
不能看行  應(yīng)該看大小  如多少M
作者: Pro_sky    時間: 2010-02-04 14:28
個人感覺寫Perl的項目不是比代碼量的,Perl有那么多的Cpan模塊就是為了方便大家,防止重造輪子
它的精華-正則表達(dá)式和hash數(shù)據(jù)結(jié)構(gòu)也是為了能夠精簡代碼

用更少的代碼實現(xiàn)相同的功能,這才是Perl高手的表現(xiàn)阿,高手都是在學(xué)習(xí)Cpan上的模塊的,不是一個勁的多寫重復(fù)的代碼,就像寫一個用來listening的服務(wù)器,POE用三行就可以了,一般的人可能要寫上上百行,然后很自豪的說“我寫了好多代碼阿”,呵呵
作者: justlooks    時間: 2010-02-04 14:59
代碼寫長容易寫短難
作者: shaneqi    時間: 2010-02-04 15:06
太長了估計就是結(jié)構(gòu)有問題了
作者: DQP    時間: 2010-02-04 15:13
為啥就沒人認(rèn)為 LZ的系統(tǒng)所解決的問題本身就很復(fù)雜 寫成14000已經(jīng)是很短的呢。
作者: Ray001    時間: 2010-02-04 15:14
perl我主要寫小工具用。最長50行。
作者: flw    時間: 2010-02-04 15:14
為啥就沒人認(rèn)為 LZ的系統(tǒng)所解決的問題本身就很復(fù)雜 寫成14000已經(jīng)是很短的呢。
DQP 發(fā)表于 2010-02-04 15:13

有這種可能。
但是賭博的樂趣就在這里。
作者: Pro_sky    時間: 2010-02-04 15:39
回復(fù) 13# DQP


    真的很復(fù)雜的話,就沒必要用perl了吧,python這種面向?qū)ο蟮拈_發(fā)起來更快
作者: 蘭花仙子    時間: 2010-02-04 17:10
回復(fù)  DQP


    真的很復(fù)雜的話,就沒必要用perl了吧,python這種面向?qū)ο蟮拈_發(fā)起來更快
Pro_sky 發(fā)表于 2010-02-04 15:39



    因為面向?qū)ο笏蚤_發(fā)起來更快?這個絕對說不過去。
作者: flw    時間: 2010-02-04 17:14
因為面向?qū)ο笏蚤_發(fā)起來更快?這個絕對說不過去。
蘭花仙子 發(fā)表于 2010-02-04 17:10

他以為面向?qū)ο笫倾y彈
作者: 蘭花仙子    時間: 2010-02-04 17:20
他以為面向?qū)ο笫倾y彈
flw 發(fā)表于 2010-02-04 17:14



    的確,提高效率沒有萬能藥~
作者: dugu072_cu    時間: 2010-02-04 17:29
1W多行,也算不得什么,我建一個測試平臺,實現(xiàn)一堆庫函數(shù),這個時候,看行數(shù)實在沒有什么意義,尤其是還加上test case 的話,我可以給你統(tǒng)計 '兆' 數(shù)~

lz如果真的寫了個非常牛x的代碼,可以先描述下大致功能,然后說你才寫了 1w 多行,就不會有這么多人拍磚了……
作者: Pro_sky    時間: 2010-02-04 17:55
回復(fù) 17# 蘭花仙子

我比較的是面向?qū)ο蠛兔嫦蜻^程,其他的不考慮在內(nèi)

面向?qū)ο蟠_實比面向過程開發(fā)效率高,因為它有封裝,盡量代碼重用

前提是你對兩種語言都很熟悉

當(dāng)然也可以用Perl寫,但是我相信開發(fā)復(fù)雜的程序的話,你會用到Perl面向?qū)ο蟮乃枷氲?hr noshade size="2" width="100%" color="#808080"> 作者: StephenHuu    時間: 2010-02-04 17:56
樓主關(guān)鍵時刻可別掉鏈子啊,上代碼是王道,我等坐觀如何刪減到1400行。

是騾子是馬,拉出來溜溜。。。
作者: flw    時間: 2010-02-04 18:07
回復(fù)  蘭花仙子

我比較的是面向?qū)ο蠛兔嫦蜻^程,其他的不考慮在內(nèi)

面向?qū)ο蟠_實比面向過程開發(fā)效率高 ...
Pro_sky 發(fā)表于 2010-02-04 17:55

我喜歡面向混沌編程:當(dāng)你開始工作的時候,完全忘記什么是 OO 什么是 OOP。
作者: flw    時間: 2010-02-04 18:09
樓主關(guān)鍵時刻可別掉鏈子啊,上代碼是王道,我等坐觀如何刪減到1400行。

是騾子是馬,拉出來溜溜。。。
StephenHuu 發(fā)表于 2010-02-04 17:56

你要沒代碼,不必湊熱鬧;你要有代碼,不必等樓主。
作者: vgra    時間: 2010-02-04 18:12
1、代碼是在以前的公司寫的,現(xiàn)在手上已經(jīng)沒有了
2、系統(tǒng)確實相當(dāng)復(fù)雜,我相信可以精簡優(yōu)化,但是要從1w4精簡到1k4,絕對沒可能,不管他多牛
3、我發(fā)這個帖子的本意,是了解一下各位大俠大致都用perl做哪些領(lǐng)域的開發(fā),沒有其他意思
4、當(dāng)初開發(fā)該系統(tǒng)時,就是看中perl的快速開發(fā)能力,但是開發(fā)過程中也有人提出,perl能否勝任大型系統(tǒng)的開發(fā)的問題,不過最后還是搞定了
5、perl的開發(fā)速度確實快,在大型復(fù)雜系統(tǒng)的開發(fā)方面,感覺純粹的面向過程模式確實開發(fā)起來挺累的,掌控起來不容易
作者: StephenHuu    時間: 2010-02-04 18:16
你要沒代碼,不必湊熱鬧;你要有代碼,不必等樓主。
flw 發(fā)表于 2010-02-04 18:09


我沒代碼(有的話也不會超過140行。。。), 我是抱著學(xué)習(xí)的目的來的圍觀群眾
作者: flw    時間: 2010-02-04 18:19
我沒代碼(有的話也不會超過140行。。。), 我是抱著學(xué)習(xí)的目的來的圍觀群眾
StephenHuu 發(fā)表于 2010-02-04 18:16

140 行也可以啊。拿上來我給你改成 14 行。
作者: Ray001    時間: 2010-02-04 20:28
回復(fù) 27# flw
  1. #!/usr/bin/perl -w
  2. # SCRIPT: chk_cfg.pl
  3. # AUTHOR: Ray001
  4. # DATE: 2010/01/19
  5. # REV: 1.0
  6. # For Development
  7. #
  8. # PURPOSE:
  9. # 檢查ycloansaccreg.prp與p_loan_typ_gl_dtl是否匹配

  10. use DBI;
  11. my $user     = "CREDIT2";    # 數(shù)據(jù)庫用戶名
  12. my $password = "PASS";       # 數(shù)據(jù)庫用戶密碼
  13. my $sid      = "CMIS";       # ORACLE_SID實例名

  14. # 連接到數(shù)據(jù)庫
  15. $dbh = DBI->connect( "DBI:Oracle:$sid", $user, $password )
  16.   || die "cannot connect to Oracle:$!\n";

  17. my $func_id;
  18. my $amt_typ;

  19. if ( !open CFG_FILE, "<ycloansaccreg.prp" ) {
  20.     die "Can't open CFG_FILE! ($!) ";
  21. }

  22. while (<CFG_FILE>) {

  23.     # 匹配獲取交易碼和金額類型
  24.     if (/(^LN..)(.*),([A-Z]0[0-9][A-Z]?)=/) {
  25.         $func_id = $1;
  26.         $amt_typ = $3;
  27.     }
  28.     else {
  29.         next;
  30.     }

  31.     # 獲取該表的字段信息
  32.     $sth = $dbh->prepare(
  33. "SELECT amt_typ FROM p_loan_typ_gl_dtl WHERE func_id='$func_id' AND amt_typ='$amt_typ'"
  34.     );
  35.     $sth->execute();
  36.     @lines = $sth->fetchrow_array();
  37.     if ( @lines == 0 ) {
  38.         print "$func_id $amt_typ not found in p_loan_typ_gl_dtl\n";
  39.     }

  40. }

  41. $sth->finish();
  42. $dbh->disconnect();
復(fù)制代碼
50行能變5行么?我剛學(xué)perl一個月。
作者: yangds_cu    時間: 2010-02-04 20:33
50行變5行的話,我估計后期維護(hù)起來就不爽了吧?
作者: 蘭花仙子    時間: 2010-02-04 20:52
沒必要過度追求精簡~~
不過Ray的code的確可以簡化一些,偶稍微修改一下:
  1. use strict;
  2. use DBI;

  3. my ($user,$password,$sid) = ("CREDIT2","PASS","CMIS");
  4. my $dbh = DBI->connect( "DBI:Oracle:$sid", $user, $password ) or die $DBI::errstr;
  5. open CFG_FILE, "ycloansaccreg.prp"  or die $!;

  6. while (<CFG_FILE>) {
  7.     my ($func_id,undef,$amt_typ) = /(^LN..)(.*),([A-Z]0[0-9][A-Z]?)=/;
  8.     my $sth = $dbh->prepare("SELECT amt_typ FROM p_loan_typ_gl_dtl WHERE func_id=? AND amt_typ=?");
  9.     $sth->execute($func_id,$amt_typ);
  10.     print "$func_id $amt_typ not found in p_loan_typ_gl_dtl\n" unless $sth->fetchrow_array();
  11.     $sth->finish();
  12. }

  13. $dbh->disconnect();
復(fù)制代碼
最后強(qiáng)調(diào)一下:
沒有use strict的code不是好code。
作者: dahe_1984    時間: 2010-02-04 21:12
仙子姐姐給人家留點面子啊。

倒是同意最后一句。
作者: cx6445    時間: 2010-02-04 21:13
沒必要過度追求精簡~~
不過Ray的code的確可以簡化一些,偶稍微修改一下:最后強(qiáng)調(diào)一下:
沒有use strict的 ...
蘭花仙子 發(fā)表于 2010-02-04 20:52


還是喜歡51行的代碼
作者: dahe_1984    時間: 2010-02-04 21:15
腳本語言,看懂為主。
我記得有C語言亂碼大賽,寫的都很有意思。
作者: 蘭花仙子    時間: 2010-02-04 21:31
仙子姐姐給人家留點面子啊。

倒是同意最后一句。
dahe_1984 發(fā)表于 2010-02-04 21:12



  其實俺沒有啥意思,就是簡化一下。
如果是偶的話,還會把那個SQL操作更簡化一下:

$dbh->selectrow_array("select ...");

省卻了那些$sth等中間過程。
作者: folklore    時間: 2010-02-04 22:14
140 行也可以啊。拿上來我給你改成 14 行。
flw 發(fā)表于 2010-02-04 18:19


#!/usr/bin/perl
print "Hello World\n";

有請F(tuán)LW大俠將它改為1行~~~


作者: folklore    時間: 2010-02-04 22:16
PSerl,大約寫了幾個程序,加起來<200行~~

作者: folklore    時間: 2010-02-04 22:18
沒必要過度追求精簡~~
不過Ray的code的確可以簡化一些,偶稍微修改一下:最后強(qiáng)調(diào)一下:
沒有use strict的 ...
蘭花仙子 發(fā)表于 2010-02-04 20:52


沒有#!的Code更不是好Code~~


作者: 蘭花仙子    時間: 2010-02-04 23:17
50行能變5行么?


話說回來,偶突然想用ruby寫一下,真的可以變?yōu)閹仔校ㄈ缦率?行):
  1. require "dbi"
  2. dbh = DBI.connect("...")
  3. File.open("domains.txt").each do |line|
  4.     domain=(line.split)[1]
  5.     puts "#{domain} not exists" unless dbh.select_one("select id from domains where domain='#{domain}'")
  6. end
復(fù)制代碼

作者: hitsubunnu    時間: 2010-02-05 08:04
本帖最后由 hitsubunnu 于 2010-02-05 08:07 編輯

蘭蘭

更正確的寫法應(yīng)該是將

my $sth = $dbh->prepare("SELECT amt_typ FROM p_loan_typ_gl_dtl WHERE func_id=? AND amt_typ=?";

放到while外


作者: Pro_sky    時間: 2010-02-05 09:58
回復(fù) 35# folklore

直接

print "Hello World\n";

運(yùn)行的的時候”perl script.pl“就ok了吧!
作者: 蘭花仙子    時間: 2010-02-05 10:13
my $sth = $dbh->prepare("SELECT amt_typ FROM p_loan_typ_gl_dtl WHERE func_id=? AND amt_typ=?";

放到while外


這個的確,疏忽了~
作者: cobrawgl    時間: 2010-02-05 10:23
  1. use IO::File;
  2. use DBI;
  3. my $dbh = DBI->connect(...);
  4. for (map { (split)[1] } IO::File->new('domains.txt')->getlines) {
  5.         print "..." unless $dbh->do(...);
  6. }
復(fù)制代碼
沒有測試,不知道能不能用
作者: Ray001    時間: 2010-02-05 10:40
沒必要過度追求精簡~~
不過Ray的code的確可以簡化一些,偶稍微修改一下:最后強(qiáng)調(diào)一下:
沒有use strict的 ...
蘭花仙子 發(fā)表于 2010-02-04 20:52



    仙子妹妹你把我的next去掉了。我需要跳過不滿足匹配的行啊。比如注釋和空行等。
作者: flw    時間: 2010-02-05 10:59
雖然 cobrawgl 和仙子已經(jīng)給出了更短的代碼,
但是我覺得該認(rèn)輸?shù)臅r候就要認(rèn)輸,Ray001 的代碼寫的確實很不錯!
如果能加上 use strict 就更好了。
至于那個 next,確實寫的有點不好,
應(yīng)該用 next unless /................../; 這種結(jié)構(gòu)更合理一些。(不習(xí)慣 unless 可以換成 if not)

如果只是追求代碼短的話,cobrawgl 的方案應(yīng)該很不錯。
另外 Class::DBI 比 DBI 更抽象,是不是用它可以更短一些,沒用過不太清楚。
作者: DQP    時間: 2010-02-05 11:05
回復(fù) 43# Ray001


    加上

  1. use IO::File;
  2. use DBI;
  3. my $dbh = DBI->connect(...);
  4. while(my $line = ($fh ||= IO::File->new('domains.txt'))->getline) {
  5.     $dbh->do ........ if($line =~ (/(^LN..)(.*),([A-Z]0[0-9][A-Z]?)=/));
  6. }

復(fù)制代碼

作者: zhumao    時間: 2010-02-05 11:23
#!/usr/bin/perl

## create a MARC::Record object.
use MARC::Record;
my $record = MARC::Record->new();

## add the leader to the record. optional.
$record->leader('00903pam   2200265 a 4500');

## create an author field.
my $author = MARC::Field->new('100',1,'',a => 'Logan, Robert K.',d => '1939-');
## create a title field.
my $title = MARC::Field->new('245','1','4',a => 'The alphabet effect /',c => 'Robert K. Logan.');
$record->append_fields($author, $title);
## open a filehandle to write to 'record.dat'.
open(OUTPUT, '> record.dat') or die $!;
print OUTPUT $record->as_usmarc();
close(OUTPUT);
像這樣的Perl程序很難把代碼變短吧?
作者: Ray001    時間: 2010-02-05 11:27
雖然 cobrawgl 和仙子已經(jīng)給出了更短的代碼,
但是我覺得該認(rèn)輸?shù)臅r候就要認(rèn)輸,Ray001 的代碼寫的確實很不 ...
flw 發(fā)表于 2010-02-05 10:59



    我是來學(xué)習(xí)的。還不大熟悉unless之類的perl方言,這貼里,已經(jīng)從諸位高手回復(fù)中學(xué)到不少啊。
作者: cobrawgl    時間: 2010-02-05 11:36
雖然 cobrawgl 和仙子已經(jīng)給出了更短的代碼,
但是我覺得該認(rèn)輸?shù)臅r候就要認(rèn)輸,Ray001 的代碼寫的確實很不 ...
flw 發(fā)表于 2010-02-05 10:59



    ORM 在使用的時候要先做一些設(shè)置,所以對這個短程序來說,只會增加代碼


作者: cobrawgl    時間: 2010-02-05 11:43
#!/usr/bin/perl

## create a MARC::Record object.
use MARC::Record;
my $record = MARC::Record->n ...
zhumao 發(fā)表于 2010-02-05 11:23
  1. use IO::File;
  2. use MARC::Record;
  3. IO::File->new('> record.dat')->print( MARC::Record->new()->leader('00903pam   2200265 a 4500')->append_fields(MARC::Field->new('100',1,'',a => 'Logan, Robert K.',d => '1939-'), MARC::Field->new('245','1','4',a => 'The alphabet effect /',c => 'Robert K. Logan.'))->as_usmarc());
復(fù)制代碼
想縮短應(yīng)該是沒問題的,關(guān)鍵是沒有多大意義啊


作者: Ray001    時間: 2010-02-05 11:49
本帖最后由 Ray001 于 2010-02-05 15:01 編輯
  1. #!/usr/bin/perl -w
  2. # SCRIPT: chk_cfg.pl
  3. # AUTHOR: Ray001
  4. # DATE: 2010/01/19
  5. # REV: 1.11
  6. # For Development
  7. #
  8. # PURPOSE:
  9. # 檢查ycloansaccreg.prp與p_loan_typ_gl_dtl是否匹配

  10. use strict;
  11. use DBI;
  12. my $user     = "CREDIT2";    # 數(shù)據(jù)庫用戶名
  13. my $password = "PASS";       # 數(shù)據(jù)庫用戶密碼
  14. my $sid      = "CMIS";       # ORACLE_SID實例名

  15. # 連接到數(shù)據(jù)庫
  16. my $dbh = DBI->connect( "DBI:Oracle:$sid", $user, $password )
  17.   || die "cannot connect to Oracle:$DBI::errstr\n";

  18. # prepare查詢數(shù)據(jù)庫表的SQL
  19. my $sth = $dbh->prepare(
  20.     "SELECT amt_typ FROM p_loan_typ_gl_dtl WHERE func_id=? AND amt_typ=?" );

  21. # 如果打開配置文件失敗, 則報錯退出
  22. open CFG_FILE, "</oradata/cmis/cfg/ycloansaccreg.prp"  or  die "Can't open CFG_FILE! ($!) ";


  23. while (<CFG_FILE>) {

  24.     # 跳過不匹配的行, $1匹配交易碼, $3匹配金額類型
  25.     next unless /(^LN..)(.*),([A-Z]0[0-9][A-Z]?)=/;

  26.     # 以$1 $3的值為條件, 查詢數(shù)據(jù)庫表
  27.     $sth->execute( $1, $3 );

  28.     # 如果在數(shù)據(jù)庫中沒有找到記錄, 打印提示信息
  29.     print "$1 $3 not found in p_loan_typ_gl_dtl\n"
  30.       unless $sth->fetchrow_array();


  31. }

  32. $sth->finish();
  33. $dbh->disconnect();
復(fù)制代碼
結(jié)合仙子、hitsubunnu、flw的建議,隆重推出1.11版。
作者: 蘭花仙子    時間: 2010-02-05 11:55
er,這個1.1版也還有2個問題:

1. die "cannot connect to Oracle:$!\n";
出錯信息不應(yīng)該用$!捕獲,而是放在DBI自帶的變量$DBI::errstr里。

2. $sth->finish應(yīng)該放在while循環(huán)里,代表一個SQL事件的結(jié)束,不應(yīng)該跟$dbh->disconnect放在一起。
作者: hoowa    時間: 2010-02-05 11:58
www.freeiris.org的中文開源通信項目。其中web部分是php做的,主要是php的人還稍微好找一些。 后端連接通信的部分基本上是Perl來做的,因為那部分程序一般人也寫不明白。
代碼量大約說不好,反正也不少好象。
使用率很高。現(xiàn)在很多地方的通信系統(tǒng)使用的都是這套。
作者: Ray001    時間: 2010-02-05 12:10
er,這個1.1版也還有2個問題:

1. die "cannot connect to Oracle!\n";
出錯信息不應(yīng)該用$!捕獲,而是 ...
蘭花仙子 發(fā)表于 2010-02-05 11:55



改了。謝謝仙子!
作者: 蘭花仙子    時間: 2010-02-05 12:46
呵呵Ray~ 偶沒仔細(xì)留意你把$sth=$dbh->prepare放到while外了。
那么$sth->finish就確實應(yīng)該跟$dbh->disconnect一起,也放到while外。
being sorry~~~再改回來吧~
作者: gdutllf2006    時間: 2010-02-05 12:53
佩服
作者: zhumao    時間: 2010-02-05 13:08
想縮短應(yīng)該是沒問題的,關(guān)鍵是沒有多大意義啊
cobrawgl 發(fā)表于 2010-02-05 11:43



這里只是列舉了幾個字段,marc記錄里面字段、子字段很多的,所以要灌水(Perl程序)的話,還是能寫的很長的。
作者: hitsubunnu    時間: 2010-02-05 13:25
的中文開源通信項目。其中web部分是php做的,主要是php的人還稍微好找一些。 后端連接通信的部分基本上是Pe ...
hoowa 發(fā)表于 2010-02-05 11:58


這個就是 Asterisk + perl調(diào)用api

Asterisk本身是c實現(xiàn)的吧 只要看得懂文檔就行 是用perl調(diào)用還是用c調(diào)用都一樣 為啥一般人寫不明白?
作者: xti9er    時間: 2010-02-05 17:30
回復(fù) 35# folklore


一行

    perl -e "print qq/Hello World\n/"
作者: wind_ch    時間: 2010-02-05 17:50
LZ可以把25樓回復(fù)的某些部分編輯到帖子里, 引導(dǎo)本貼向更有意義的方向討論。
作者: wxlfh    時間: 2010-02-05 18:59
學(xué)習(xí)了,都是高手。
作者: threadtag    時間: 2010-02-06 02:49
想起了“海上鋼琴師”中 彪鋼琴的那一段,高手對決啊。。。。   低水平觀眾來打個醬油。。
作者: ttcn_cu    時間: 2010-02-06 04:22
看14k代碼??

14k是一個人寫的么?太多了吧,大家拼湊出來吧, 看代碼不如了解框架是怎樣的.得從一個很高的角度來看.
拿不出框架的話,1400行估計真足夠了.

這種問題軟件工程早就解決了,根本無需討論代碼行數(shù)的問題
作者: yigenjin    時間: 2010-02-06 08:24
本帖最后由 yigenjin 于 2010-02-06 17:23 編輯
為了防止誤會,我再補(bǔ)充一下:
【代碼質(zhì)量只會比刪剪前更優(yōu)】
flw 發(fā)表于 2010-02-04 13:38


很弱的菜鳥,但是意識里還算注重編程規(guī)范風(fēng)格。自知自己的代碼還有好多差勁的地方。
誠心誠意希望能得到flw大俠的指教,貼段最近寫的代碼,求優(yōu)化(絕非賭博較勁)

任務(wù)完成,編輯掉。嘿嘿。
作者: unicom_2    時間: 2010-02-06 11:07
留個腳印瞻仰下大神們
作者: flw    時間: 2010-02-06 13:34
回復(fù) 63# yigenjin


你的程序?qū)懙暮芎茫?br /> 如果能稍微再加一些空格和空行就更好了!
作者: yigenjin    時間: 2010-02-06 17:23
回復(fù) 65# flw

多謝指教。以后會注意的!
作者: leal402    時間: 2010-02-06 17:52
er,這個1.1版也還有2個問題:

1. die "cannot connect to Oracle!\n";
出錯信息不應(yīng)該用$!捕獲,而是 ...
蘭花仙子 發(fā)表于 2010-02-05 11:55



    =>1就因系統(tǒng)請求是出錯了,
  也不應(yīng)該用
  die "cannot connect to Oracle $!\n";
   提倡用:
   die "cannot connect to Oracle $!";
作者: flw    時間: 2010-02-06 18:19
=>1就因系統(tǒng)請求是出錯了,
  也不應(yīng)該用
  die "cannot connect to Oracle $!\n";
   提倡用 ...
leal402 發(fā)表于 2010-02-06 17:52

我就喜歡用 die "\n";
把 at xxx *.pm *.pl 濾掉,
這樣看上去很專業(yè),不至于被人指責(zé)是一堆亂七八糟的腳本,就像 C 寫的一樣,顯得高深。
偶爾在關(guān)鍵位置 cluck 一把。
作者: leal402    時間: 2010-02-06 18:28
我就喜歡用 die "\n";
把 at xxx *.pm *.pl 濾掉,
這樣看上去很專業(yè),不至于被人指責(zé)是一堆亂七八糟的 ...
flw 發(fā)表于 2010-02-06 18:19



    聽flw這一說,俺開始感覺喜歡die "\n",這種感覺越來越強(qiáng)烈。
作者: yigenjin    時間: 2010-02-06 18:41
我就喜歡用 die "\n";
把 at xxx *.pm *.pl 濾掉,
這樣看上去很專業(yè),不至于被人指責(zé)是一堆亂七八糟的 ...
flw 發(fā)表于 2010-02-06 18:19


贊同。我一直都是die "\n"
看上去很干凈。讓程序退出運(yùn)行的目的又達(dá)到了。

flw兄,站內(nèi)短消息你了。
作者: gilet    時間: 2010-02-06 20:26
回復(fù) 35# folklore


    perl -le 'print "Hello World"'

{:3_182:}
作者: gilet    時間: 2010-02-06 20:26
大牛真多,偶也打瓶醬油。。。

{:3_188:}
作者: Perl_Er    時間: 2010-02-06 20:46
:wink:
作者: ttcn_cu    時間: 2010-02-07 05:59
回復(fù) 68# flw

喜歡寫個框架封裝用戶的執(zhí)行環(huán)境,命令行信息;重寫die函數(shù)讓其輸出腳本出錯后該把問題發(fā)給誰的信息,要不然腳本死翹翹后就啥也沒了,用戶也會不知所措
作者: 2gua    時間: 2010-02-07 08:00
我可以把它刪減到 1400 行,你信不信?
flw 發(fā)表于 2010-02-04 13:29


這么厲害啊?
作者: chinesedragon    時間: 2010-02-07 11:09
路過了,又一個爭持
作者: godsad    時間: 2010-02-07 16:31
躺地上瞻仰
作者: atei    時間: 2010-02-07 18:08
圍觀大神
作者: greensnow    時間: 2010-02-07 23:30
因為寫的都是小工具,從來沒用perl寫過超過1k行的程序
上個月用perl寫一個東西,到最后用C++重寫了
作者: davycu    時間: 2010-02-08 10:23
不懷疑flw的NX,但懷疑1400行的操作系統(tǒng)...

不懂perl的飄過...
作者: Perl_Er    時間: 2010-02-08 10:34
沒有意義
作者: FinalBSD    時間: 2010-02-08 10:57
最討厭就是寫了一大堆,代碼的原則簡單就是美。
作者: yigenjin    時間: 2010-02-08 13:04
最討厭就是寫了一大堆,代碼的原則簡單就是美。
FinalBSD 發(fā)表于 2010-02-08 10:57


竊以為寫一大堆跟簡單沒什么聯(lián)系。

以前見過一個人寫Shell:

$path=/path/to/mypath
[ -d $path ] || mkdir -p $path

他的意圖很明顯,當(dāng)沒有自己需要的路徑時則新建。

可是他忽略了一種情況,就是當(dāng)$path是以普通文件(或其他類型)存在的時候。于是這個腳本在長期運(yùn)行中便可能出錯,盡管可能性很小。

我覺得寫代碼貴在嚴(yán)密,簡單應(yīng)該體現(xiàn)在思路、設(shè)計上。

作為一個嚴(yán)謹(jǐn)?shù)募夹g(shù)工,為了嚴(yán)謹(jǐn),寫一大堆代碼也是需要的。應(yīng)該適當(dāng)將計算機(jī)環(huán)境設(shè)想得不如人意,而不是一切都想當(dāng)然圖省事。
作者: flw    時間: 2010-02-08 13:12
竊以為寫一大堆跟簡單沒什么聯(lián)系。

以前見過一個人寫Shell:

$path=/path/to/mypath
[ -d $path ...
yigenjin 發(fā)表于 2010-02-08 13:04

如果是我的話,
我就直接寫 mkpath $path 了。
作者: yigenjin    時間: 2010-02-08 13:19
如果是我的話,
我就直接寫 mkpath $path 了。
flw 發(fā)表于 2010-02-08 13:12




人家是shell,你是perl。

BTW:如果你mkpath的 $path以一個文件存在著,你能mkpath成功么?我覺得不能吧。
作者: flw    時間: 2010-02-08 13:30
回復(fù) 85# yigenjin
他那個也不能成功。
我只是為了表達(dá)一下 -d 只不過是脫褲子放屁而已。

類似的還有刪除的時候。


BTW:我是被你的 $path= 給誤導(dǎo)了,還以為是 Perl 呢。
shell 里可是不這么寫的。
作者: lth0721    時間: 2010-02-08 16:21
回復(fù) 86# flw


   
作者: redicaps    時間: 2010-02-08 20:47
個人感覺寫Perl的項目不是比代碼量的,Perl有那么多的Cpan模塊就是為了方便大家,防止重造輪子
它的精華- ...
Pro_sky 發(fā)表于 2010-02-04 14:28


這是扯淡高手
你當(dāng)然可以選擇好的輪子,但輪子壞了不會修你就傻眼了
作者: yigenjin    時間: 2010-02-08 21:27
這是扯淡高手
你當(dāng)然可以選擇好的輪子,但輪子壞了不會修你就傻眼了
redicaps 發(fā)表于 2010-02-08 20:47


贊同啊,有的時候為了在上千臺主機(jī)應(yīng)用一些相同的小腳本,考慮到移植性,自己重復(fù)仿造個小輪子也是很正常滴!
作者: evaspring    時間: 2010-02-08 22:29
{:3_191:} 關(guān)鍵是要有一顆牛叉的心。有了一顆牛叉的心,就不再是人,而是牛人了。

膜拜牛人 ~
作者: DQP    時間: 2010-02-08 23:04
回復(fù) 90# evaspring


    好兔子...
作者: bigarade    時間: 2010-02-09 02:03
代碼行數(shù)不能作為萬能標(biāo)準(zhǔn)
作者: cwking726    時間: 2010-02-09 13:25
perl目前正在學(xué)習(xí)中..........
作者: 蘭花仙子    時間: 2010-02-09 14:35
仙子

Perl

短也



--蘭花體
作者: yigenjin    時間: 2010-02-09 15:02
仙子

Perl

短也



--蘭花體
蘭花仙子 發(fā)表于 2010-02-09 14:35


灌水舉報
作者: lewphee    時間: 2010-02-11 17:58
仙子

Perl

短也



--蘭花體
蘭花仙子 發(fā)表于 2010-02-09 14:35


小四文風(fēng)
作者: jjqing    時間: 2010-02-12 14:53
本帖最后由 jjqing 于 2010-02-12 14:55 編輯

當(dāng)我寫了3萬行代碼以后,我才發(fā)現(xiàn)自己什么都不懂。
作者: 為什么刪我號    時間: 2010-02-12 15:21
不管多少,關(guān)鍵看有沒有實現(xiàn)客戶需求
作者: engrol    時間: 2010-02-12 16:12
代碼寫得多少與水平高低沒有嚴(yán)格的正比關(guān)系,但所謂熟能生巧,代碼寫多了,很多東西自然就記住了,將來會很自然地運(yùn)用。

軟件系統(tǒng)的結(jié)構(gòu)一定要簡潔,簡潔不是簡單。做軟件要考慮可能的變動。例如界面的變化,多語言界面的支持,數(shù)據(jù)庫表結(jié)構(gòu)的變化。

剛開始使用CGI寫WEB程序時,代碼和界面耦合太緊,導(dǎo)致界面修改困難,后來出現(xiàn)的Mason,Embperl,Template::Toolkit基本上可以消除這種耦合。這樣代碼中基本上不需要出現(xiàn)html代碼。

對于大的軟件來說,如果數(shù)據(jù)表結(jié)構(gòu)變化導(dǎo)致程序中到處都需要修改的話,一方面會增加出錯的可能性,另一方面降低程序員的成就感,在程序代碼中大量直接使用SQL語句是代碼和數(shù)據(jù)庫耦合過緊的根本原因。使用SQL::Abstract可以基本消除這種耦合。

軟件設(shè)計的原則是“強(qiáng)內(nèi)聚,松耦合”,相信大部分人都說得出來,但定性的概念,誰都會解釋。如果設(shè)計一個定量的方法檢測,就會發(fā)現(xiàn)大多人的設(shè)計都會存在很大的問題。
作者: hzhgz2006    時間: 2010-02-14 12:41
向高手學(xué)習(xí)!




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2