第 1 頁 (共 1 頁)
Perl 程式設計教學 【限】
發表於 : 09/13/2002 5:13 pm
由 bryanchang
版主謝大人說我們程式設計區人氣太弱,白萊恩趕快來這裡貼一些對於大家有價值的程式,以鼓舞士氣。
今天要介紹的是 Perl 語言的寫作。白萊恩一直以為,學程式語言成功的秘訣只有一個,就是要有動機。
為了要給大家一個動機,只要好好的研讀以下的 Perl 範例程式,保證你會有豐富的(實質)收獲。
至於你該怎樣去執行這個程式,就當成回家的功課,請自行上網或是跑圖書館找答案。另外請未滿十八歲的讀者自行離去,謝謝合作。
<BLOCKQUOTE><font size="1" face="XYZ">code:</font><HR><pre>
#!/usr/bin/perl -w
my @year_range = (1954 .. 2002);
my @month_range = (1 .. 12);
my $download_dir = "pb";
chdir;
unless(-e $download_dir && -d $download_dir){
mkdir $download_dir;
}
chdir "$download_dir" or die "Can't cd to pb: $!\n";
foreach $yr (@year_range){
foreach $mn (@month_range){
printf "* Getting file for %d/%02d...\n", $yr, $mn;
system sprintf "curl -sO [url=http://rosbif.free.fr/playboy/img/%d_%02d.jpg\n",]http://rosbif.free.fr/playboy/img/%d_%02d.jpg\n",[/url] $yr, $mn;
if($yr==2002 && $mn==7){
last;
}
}
}
print "All done. Enjoy!\n";
system "open .";
</pre><HR></BLOCKQUOTE>
[ 09-13-2002: 留言編輯者: 白萊恩 ]
Perl 程式設計教學 【限】
發表於 : 09/13/2002 7:38 pm
由 fddi1
天啊,從瑪麗蓮夢露的時代開始啊,真是一網打盡。
Perl 程式設計教學 【限】
發表於 : 09/14/2002 3:13 am
由 悲
白老大,
一次過下載伍佰多幅圖片,有點兒難度。小弟用 applescript 改寫,每次只下載一年的圖片,野人獻曝,勿怪。
以下的指令,除分行外,有三個錯誤,更正後你會有豐富的(實質)收獲(白老大用語)。
-- script starts
set baseURL to "http://ubb.frostyplace.com.tw"
set fileList to {}
repeat with i from 1953 to 2002
repeat with j from 1 to 12
set end of fileList to (i & "_" & text -2 thru -1 of ("0" & j) & ".jpg") as string
end repeat
end repeat
set fileList to items 12 thru -6 of fileList
set yearList to {}
repeat with i from 2002 to 1953
set end of yearList to i
end repeat
set chooseYear to (choose from list yearList with prompt "please choose the year" default items {} without multiple selections allowed and empty selection allowed)
if chooseYear = false then
return
else
set desireYear to (item 1 of chooseYear)
end if
set desireList to {}
repeat with i in fileList
if contents of i starts with desireYear then set end of desireList to contents of i
end repeat
with timeout of 600 seconds
repeat with i in desireList
set pixPath to ((path to desktop as string) & contents of i)
-- set pixURL to baseURL & contents of i
try
tell application "URL Access Scripting" to download pixURL to file pixPath replacing yes
end try
end repeat
end timeout
-- script ends
要提示嗎?
Perl 程式設計教學 【限】
發表於 : 09/14/2002 3:13 am
由 the real unknown
<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>原始發信人 白萊恩:
<STRONG>今天要介紹的是 Perl 語言的寫作。白萊恩一直以為,學程式語言成功的秘訣只有一個,就是要有動機。</STRONG><HR></BLOCKQUOTE>
沒錯。像下個月的貸款要繳、明天的買菜錢、兒子的托兒所...等等,都是很好的動機。
Perl 程式設計教學 【限】
發表於 : 09/14/2002 3:15 am
由 the real unknown
哦,忘了還有要給蘋果的香油錢。
Perl 程式設計教學 【限】
發表於 : 09/14/2002 5:47 am
由 bryanchang
<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>原始發信人 悲:
<STRONG>白老大,一次過下載伍佰多幅圖片,有點兒難度。小弟用 applescript 改寫,每次只下載一年的圖片...</STRONG><HR></BLOCKQUOTE>
你看,馬上不就有 AppleScript 版了吧?搞不好等會 Oeyvind 就會貼出 Shell Script 版了。 :-)
所以囉~寫程式不難,難的是找到想寫的目標與動機。
p.s. 我之所以讓它一次抓全部,也是要讓讀者因受不了而產生改寫的念頭,這樣不就很快學會 Perl 了嗎... 呵。
不過悲兄 (不是杯兄) 故意留一手的作法也很好,值得學習。 [img]images/smiles/icon_wink.gif[/img]
Perl 程式設計教學 【限】
發表於 : 09/14/2002 6:12 am
由 bryanchang
Perl 程式設計教學 【限】
發表於 : 09/14/2002 6:16 am
由 謝孟叡
<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>原始發信人 白萊恩:
<STRONG>你看,馬上不就有 AppleScript 版了吧?搞不好等會 Oeyvind 就會貼出 Shell Script 版了。 :-)
</STRONG><HR></BLOCKQUOTE>
剛剛試寫了一下,shell script 寫出來很難看... 還是用 perl 好
Perl 程式設計教學 【限】
發表於 : 09/14/2002 6:48 am
由 bryanchang
<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>原始發信人 謝孟叡:
<STRONG>剛剛試寫了一下,shell script 寫出來很難看... 還是用 perl 好</STRONG><HR></BLOCKQUOTE>
啊~忘記謝大人這位 Unix hacker... [img]images/smiles/icon_razz.gif[/img]
btw, curl 不是跟 wget 沒啥差別?還是你是覺得有不少 Installer script 會因沒 wget 而出問題?
另外這有 Jaguar 版的 vim:
http://macvim.swdev.org/OSX
[ 09-14-2002: 留言編輯者: 白萊恩 ]
Perl 程式設計教學 【限】
發表於 : 09/14/2002 9:28 am
由 謝孟叡
<BLOCKQUOTE><font size="1" face="XYZ">quote:</font><HR>原始發信人 白萊恩:
<STRONG>啊~忘記謝大人這位 Unix hacker... [img]images/smiles/icon_razz.gif[/img]
btw, curl 不是跟 wget 沒啥差別?還是你是覺得有不少 Installer script 會因沒 wget 而出問題?
</STRONG><HR></BLOCKQUOTE>
我說 missing 的意思是, 我希望 apple 內附啦..
BTW, I always compile vim by myself since the number of patches is in the order of 10^2...
我想 apple 還是會盡量避免用太多 gnu 的東西. 因為授權的問題有點麻煩,但是既然有 emacs 就別這麼龜毛嘛....
我用 wget 是比較習慣點, curl 還要多加 -o .... 但是我在 FreeBSD 上面比較喜歡用 fetch :-)
Perl 程式設計教學 【限】
發表於 : 09/14/2002 9:59 am
由 bryanchang
據我所知 wget 是 license 的緣故不能加在 Mac OS X/Darwin 裡。
Perl 程式設計教學 【限】
發表於 : 09/15/2002 12:19 am
由 悲
<BLOCKQUOTE><font size="1" face="XYZ">quote
不過悲兄 (不是杯兄) 故意留一手的作法也很好,值得學習。
見笑:) 因這是限制級圖片,不宜編譯後可立即下載。
提示一:
set baseURL to "http://ubb.frostyplace.com.tw"
variable [ baseURL ] 的 value [ "http://ubb.frostyplace.com.tw" ] 是錯誤的,正確的網址,細看第一個留言。
白老大,小弟有一個一次開啟多個網頁的 applescript,未知可否在此公諸同好?
Perl 程式設計教學 【限】
發表於 : 09/15/2002 12:39 am
由 bryanchang
白老大,小弟有一個一次開啟多個網頁的 applescript,未知可否在此公諸同好?
當然當然,求之不得呢! [img]images/smiles/icon_biggrin.gif[/img]
Perl 程式設計教學 【限】
發表於 : 09/15/2002 2:41 am
由 悲
解答一:
句子 set baseURL to "http://ubb.frostyplace.com.tw" 應改為
set baseURL to "http://rosbif.free.fr/playboy/img/"
明白了什麼是變數,值,及如何宣告之?
提示二:
applescript 的其中一個迴圈句子格式為
repeat with [loop variable] from [integer] to [integer] [by stepVal]
-- statement
end repeat
舉例:repeat with i from 1 to 10,則迴圈第一次執行時,i = 1; 迴圈第二次執行時 ,i=2。因 stepVal 預置為 1,如不另行指定。
所以,此迴圈出了錯誤:
repeat with i from 2002 to 1953
set end of yearList to i
end repeat
Perl 程式設計教學 【限】
發表於 : 09/16/2002 4:36 pm
由 悲
解答二:
迴圈
repeat with i from 2002 to 1953
set end of yearList to i
end repeat
應改為
repeat with i from 1953 to 2002
set end of yearList to i
end repeat
提示三:
applescript 用 -- 來宣告其後的同一行字為註解,像 C shells 中 # 的用法。程序中有一行指令錯誤地宣告為註解。
Perl 程式設計教學 【限】
發表於 : 09/18/2002 11:19 am
由 悲
解答三:
句子
-- set pixURL to baseURL & contents of i
應改為
set pixURL to baseURL & contents of i