This man is too old to remember everything in his brain. Right now, he needs a place to write down what he has studied.
標籤
4GL
(1)
人才發展
(10)
人物
(3)
太陽能
(4)
心理
(3)
心靈
(10)
文學
(31)
生活常識
(14)
光學
(1)
名句
(10)
即時通訊軟體
(2)
奇狐
(2)
爬蟲
(1)
音樂
(2)
產業
(5)
郭語錄
(3)
無聊
(3)
統計
(4)
新聞
(1)
經濟學
(1)
經營管理
(42)
解析度
(1)
遊戲
(5)
電學
(1)
網管
(10)
廣告
(1)
數學
(1)
機率
(1)
雜趣
(1)
證券
(4)
證券期貨
(1)
ABAP
(15)
AD
(1)
agentflow
(4)
AJAX
(1)
Android
(1)
AnyChart
(1)
Apache
(14)
BASIS
(4)
BDL
(1)
C#
(1)
Church
(1)
CIE
(1)
CO
(38)
Converter
(1)
cron
(1)
CSS
(23)
DMS
(1)
DVD
(1)
Eclipse
(1)
English
(1)
excel
(5)
Exchange
(4)
Failover
(1)
Fedora
(1)
FI
(57)
File Transfer
(1)
Firefox
(3)
FM
(2)
fourjs
(1)
Genero
(1)
gladiatus
(1)
google
(1)
Google Maps API
(2)
grep
(1)
Grub
(1)
HR
(2)
html
(23)
HTS
(8)
IE
(1)
IE 8
(1)
IIS
(1)
IMAP
(3)
Internet Explorer
(1)
java
(4)
JavaScript
(22)
jQuery
(6)
JSON
(1)
K3b
(1)
ldd
(1)
LED
(3)
Linux
(117)
Linux Mint
(4)
Load Balance
(1)
Microsoft
(2)
MIS
(2)
MM
(51)
MSSQL
(1)
MySQL
(27)
Network
(1)
NFS
(1)
Office
(1)
OpenSSL
(1)
Oracle
(126)
Outlook
(3)
PDF
(6)
Perl
(60)
PHP
(33)
PL/SQL
(1)
PL/SQL Developer
(1)
PM
(3)
Postfix
(2)
postfwd
(1)
PostgreSQL
(1)
PP
(50)
python
(5)
QM
(1)
Red Hat
(4)
Reporting Service
(28)
ruby
(11)
SAP
(234)
scp
(1)
SD
(16)
sed
(1)
Selenium
(3)
Selenium-WebDriver
(5)
shell
(5)
SQL
(4)
SQL server
(8)
sqlplus
(1)
SQuirreL SQL Client
(1)
SSH
(2)
SWOT
(3)
Symantec
(2)
T-SQL
(7)
Tera Term
(2)
tip
(1)
tiptop
(24)
Tomcat
(6)
Trouble Shooting
(1)
Tuning
(5)
Ubuntu
(37)
ufw
(1)
utf-8
(1)
VIM
(11)
Virtual Machine
(2)
VirtualBox
(1)
vnc
(3)
Web Service
(2)
wget
(1)
Windows
(19)
Windows
(1)
WM
(6)
Xvfb
(2)
youtube
(1)
yum
(2)
2012年2月27日 星期一
2012年2月25日 星期六
一是定策略,二是建組織,三是佈人力,四是置系統
定策略 :
1. 使用資訊系統有效運用人力
2. 使用資訊系統降低人為錯誤
3. 使用資訊系統讓管理資訊透明化
4. 發現問題,分析問題,改善問題,解決問題
建組織 :
以公司內部組織,建立相對應的資訊部組織
經管/生管 組織
工管/品管 組織
佈人力 :
1. 選育用留
2. 領導,以身作則;以寬恕代替教訓,以鼓勵代替責備
3. 教育
4. 糾紛排除
置系統 :
經管
生管
工管
品管
1. 使用資訊系統有效運用人力
2. 使用資訊系統降低人為錯誤
3. 使用資訊系統讓管理資訊透明化
4. 發現問題,分析問題,改善問題,解決問題
建組織 :
以公司內部組織,建立相對應的資訊部組織
經管/生管 組織
工管/品管 組織
佈人力 :
1. 選育用留
2. 領導,以身作則;以寬恕代替教訓,以鼓勵代替責備
3. 教育
4. 糾紛排除
置系統 :
經管
生管
工管
品管
郭語錄
郭台銘語錄 - Presentation Transcript
-
- 1984 年─ 1995 年:產品專注於垂直整合階段。 核心技術扎根化,專利系統制度化, 零件製造知識化。 鴻海第 1 階段創新 郭台銘名言: 格局,布局,步局。 心胸有多大,舞台就有多大。
- 1996 年─ 1998 年:產品走向逆向整合階段。 一地設計,兩地製造,三區交貨。 鴻海第 2 階段創新 郭台銘名言: 在我的領域,沒有競爭的對手。
- 鴻海第 3 階段創新 1999 年─ 2001 年:產品往橫向整合階段。 一地設計,三區製造,全球交貨。 郭台銘名言: 成功是最差的老師, 它只會帶給你膽怯和懦弱。
- 鴻海第 4 階段創新 2002 年─ 2003 年:產品走向多元整合階段。 兩地設計,三區製造,全球彈性交貨。 郭台銘名言: Low Tech , High Tech , Make Money Is Tech , 科技創新的真諦, 是讓傳統的東西賦與新的生命。
- 速度篇 成長,你的名字就叫痛苦。 Suffering is the identical twin of growth. 「我們富士康走遍全世界,靠的就是速度!」二○○四年九月,郭台銘親自出席山西省太原科技園區的落成典禮時,第一句話就提到了速度。 「轉型與變革」,其實是一個「否定自我」和「再造自我」的艱難挑戰。 郭台銘強調,業績與榮譽,正是從結構性的經營轉型而來,從創造性的變革經營而來,其實也是從改變及再造而來,只是這種過程一定伴隨著痛苦,但是痛苦之後,就會有新的榮譽和成長。
- 人才篇 心胸有多大,舞台就有多大 。 Your Potential is only limited by your Aspirations 什麼是「關鍵性人才」?郭台銘指出,鴻海一切成長,也都來自關鍵性人才及其對時間的有效運用。 郭台銘大約花了兩年時間,來說服富士康控股總經理戴豐樹放棄豐田集團的「終身雇用制」、及全球前二大汽車公司的經理人光環,加入鴻海的行列。 對於郭台銘來說,只要人才有心發展,就有發展空間。富士康控股在 2006 年己變成鴻海集團旗下最大的一塊事業版圖,戴豐樹從汽車領域又被郭台銘指派發展手機零組件,當時有人就懷疑做車子的,能把手機做得好嗎?但郭台銘認為,「車子的零件有兩千多種,但手機只有兩百多種,你說做得起來嗎?」
- 彈性篇 一個地震很多的地方,人的警覺性特別高。 who live in earthquake zones are often the most alert. 經營一個企業,重要的是怎麼在制度跟彈性之間找到一個平衡。 面對產業大幅震盪,鴻海則是在組織中培養「高度警覺」的意識。郭台銘就比喻,「一個地震很多的地方,像花蓮人的警覺性就比其他地方高,」鴻海組織上的「地震」恐怕要比花蓮頻繁。像鴻海 1998 年前只有三個事業群,但是 2005 年時已經有了九大事業群,而且從功能和客戶做不同區分。
- 逆境篇 烏龜要知道別把兔子吵醒。相對的,兔子是否肯像烏龜那樣一跑三十年? The tortoise needs to realize that it shall never wake the napping hare. On the same token, do you really think the hare will sprint for 30 straight years? 每當郭台銘面對外界詢問有關人事布局的問題時,他都不諱言這的確考驗著經營者的智慧。因為在快速前進變動的經營環境中,老員工也用、新員工也用,但經營者必須要面臨「老員工上不去」的嚴肅問題:要怎麼樣安排?讓他做什麼?
- 創新篇 每一隻公雞,都以為太陽是牠叫出來的 。 Every rooster believes that it is him who summons the sun every morning. 郭台銘喜歡提醒老員工不要過於自大,以目前的成就沾沾自喜,否則就像無知的「公雞」。 他進一步比喻,這就像當年宋太祖「杯酒釋兵權」的關鍵做法。因為打天下的是一批人,跟治理天下的應該是不同一批人,就算貴為一國皇帝也會面臨這樣的問題,更何況是企業主?
[整理] 鴻海員工的聖經 - 郭語錄
郭語錄42人沒有天生的窮命和賤命
只有你是用什麼樣的心態來磨練自己
郭台銘小時候家裡沒有自己的房子
也沒有沙發 最好的只有幾把籐椅
但是全家人都很知足
郭台銘認為這是他父親給了他最好的身教
不做非份之想 不取不義之財 知足常樂
頭銜和金錢其實不會帶來快樂
是努力的過程讓他覺得充實
痛苦或快樂 一切看自己怎麼想
郭台銘唯一覺得比較痛苦的
是看到沒有正義公理的事
就會很難過
第129~第137頁內容中
「習」,是兩個羽加上自己,就是自己去飛!
呵護過多 不但無法成材 還足以害之。
郭台銘舉了黃石公園的鴿子為例
有一年冬天,一場大雪之後,鴿子全都死了,
因為鴿子平時習慣了人類的餵食,都失去了自己覓食的能力,
結果冬天沒有人餵食,鴿子全都沒有辦法度過冬天
於是黃石公園立了"禁止餵鴿子"的牌子
↓
這段話 我很想分享一部卡通片
Finding Nemo 海底總動員
那個原本過度保護的父親Marlin(馬林)
如果Nemo(尼莫)沒有被捉走 那樣的人生你要嗎?
請正視"放手"對小孩的重要性。
郭語錄56
有一次 郭台銘去美國麥當勞 問點菜員說:能不能不要起司?
點菜員說:如果你不吃,就自己拿掉。
只有一次 在阿拉巴馬州 有個女性工讀生
她說可以。
「她就在我面前 打開包裝紙 把起司拿掉
然後再包起來說:這是你的了。」
即使公司有規定 但是客戶要求沒起司
這個生意就做不成了嗎?
郭台銘指出
產品固定了 她應客人需求把起司拿掉
這就是「彈性」
↓
打工 應該是很多年輕人的回憶
客戶的種種要求 不要當成奧客
當成是一種有趣的挑戰
也會比較快樂唷。
郭語錄77如果看問題都和別人一樣
看報紙就好了
↓
這段話 我笑了…
每次遇到有人跟我反駁「電視都這樣講呀!」
拜託一下
你的人生及思考是由媒體定奪?
做點更深入的實際了解吧。
郭語錄79&89
郭台銘擔任台灣區模具工會理事長時
新加坡勞工部長特別向他請教台灣政府做了什麼
為什麼台灣中小企業這麼強大?
「我們的政府什麼都沒做
所以我們有蟑螂一樣的生存能力。」
郭台銘還記得剛創業的前三年
有時工廠一開門 就有小混混來收保護費
不然就是生產線上員工打架 他要負責排解
「最可惡的是
早上有人來推銷消防器材
如果不付錢買這些器材
下午就有官員來做消防檢查。」
郭台銘對外最常講的笑話就是
鴻海之所以設在土城
是因為離當時專關票據犯的土城看守所很近
萬一他因為鴻海退票被抓去關
不只家人探監方便 他也順便交待公司業務。
↓
堅忍的毅力
向前衝的傻勁
智慧比聰明重要
謝謝你用"行動" 讓我上了寶貴的一課。
郭語錄94
高科技來自感恩的心。有一次 郭台銘跟一個計程車司機聊天
司機告訴他一個他自己的故事
他每天賺了錢,只吃兩個饅頭、兩根蔥,
但買一根雞腿回去給兒子吃。
有一次,他生病了,他妻子把兒子的雞腿給他吃,
他兒子竟然打他媽媽一巴掌。
他說:「這雞腿是我的,為什麼要給爸爸吃?」
是我把小孩教育成這樣
他從小吃雞腿,雞腿是他的
今天他爸爸生病了,他也不讓步。
高科技 要有團隊合作跟感恩的心。
高科技的成功,都是很多因素湊成的,是很多人促成的。
沒有感恩心,不會團隊合作,只曉得占有。
不可能做出什麼。
↓
這個故事 給我很多感慨
教育 一直都是很重要的核心價值
企業的源遠流長 家族的成功傳承
都在"品格"。
郭語錄105
所謂「顧問」,就是你問他現在幾點
而他借用你的錶,然後告訴你現在幾點。
郭台銘要求員工 一定要有自己的獨立思考
一味相信「顧問」
會失去知識工作者的獨立性
↓
這段話 我延伸為
不要迷失在證照或學歷中
就算對方是高學歷還是什麼師(最近很多"師")
也要自己好好做功課研究
相信自己的判斷 而非被"師"左右自己。
只有你是用什麼樣的心態來磨練自己
郭台銘小時候家裡沒有自己的房子
也沒有沙發 最好的只有幾把籐椅
但是全家人都很知足
郭台銘認為這是他父親給了他最好的身教
不做非份之想 不取不義之財 知足常樂
頭銜和金錢其實不會帶來快樂
是努力的過程讓他覺得充實
痛苦或快樂 一切看自己怎麼想
郭台銘唯一覺得比較痛苦的
是看到沒有正義公理的事
就會很難過
第129~第137頁內容中
「習」,是兩個羽加上自己,就是自己去飛!
呵護過多 不但無法成材 還足以害之。
郭台銘舉了黃石公園的鴿子為例
有一年冬天,一場大雪之後,鴿子全都死了,
因為鴿子平時習慣了人類的餵食,都失去了自己覓食的能力,
結果冬天沒有人餵食,鴿子全都沒有辦法度過冬天
於是黃石公園立了"禁止餵鴿子"的牌子
↓
這段話 我很想分享一部卡通片
Finding Nemo 海底總動員
那個原本過度保護的父親Marlin(馬林)
如果Nemo(尼莫)沒有被捉走 那樣的人生你要嗎?
請正視"放手"對小孩的重要性。
郭語錄56
有一次 郭台銘去美國麥當勞 問點菜員說:能不能不要起司?
點菜員說:如果你不吃,就自己拿掉。
只有一次 在阿拉巴馬州 有個女性工讀生
她說可以。
「她就在我面前 打開包裝紙 把起司拿掉
然後再包起來說:這是你的了。」
即使公司有規定 但是客戶要求沒起司
這個生意就做不成了嗎?
郭台銘指出
產品固定了 她應客人需求把起司拿掉
這就是「彈性」
↓
打工 應該是很多年輕人的回憶
客戶的種種要求 不要當成奧客
當成是一種有趣的挑戰
也會比較快樂唷。
郭語錄77如果看問題都和別人一樣
看報紙就好了
↓
這段話 我笑了…
每次遇到有人跟我反駁「電視都這樣講呀!」
拜託一下
你的人生及思考是由媒體定奪?
做點更深入的實際了解吧。
郭語錄79&89
郭台銘擔任台灣區模具工會理事長時
新加坡勞工部長特別向他請教台灣政府做了什麼
為什麼台灣中小企業這麼強大?
「我們的政府什麼都沒做
所以我們有蟑螂一樣的生存能力。」
郭台銘還記得剛創業的前三年
有時工廠一開門 就有小混混來收保護費
不然就是生產線上員工打架 他要負責排解
「最可惡的是
早上有人來推銷消防器材
如果不付錢買這些器材
下午就有官員來做消防檢查。」
郭台銘對外最常講的笑話就是
鴻海之所以設在土城
是因為離當時專關票據犯的土城看守所很近
萬一他因為鴻海退票被抓去關
不只家人探監方便 他也順便交待公司業務。
↓
堅忍的毅力
向前衝的傻勁
智慧比聰明重要
謝謝你用"行動" 讓我上了寶貴的一課。
郭語錄94
高科技來自感恩的心。有一次 郭台銘跟一個計程車司機聊天
司機告訴他一個他自己的故事
他每天賺了錢,只吃兩個饅頭、兩根蔥,
但買一根雞腿回去給兒子吃。
有一次,他生病了,他妻子把兒子的雞腿給他吃,
他兒子竟然打他媽媽一巴掌。
他說:「這雞腿是我的,為什麼要給爸爸吃?」
是我把小孩教育成這樣
他從小吃雞腿,雞腿是他的
今天他爸爸生病了,他也不讓步。
高科技 要有團隊合作跟感恩的心。
高科技的成功,都是很多因素湊成的,是很多人促成的。
沒有感恩心,不會團隊合作,只曉得占有。
不可能做出什麼。
↓
這個故事 給我很多感慨
教育 一直都是很重要的核心價值
企業的源遠流長 家族的成功傳承
都在"品格"。
郭語錄105
所謂「顧問」,就是你問他現在幾點
而他借用你的錶,然後告訴你現在幾點。
郭台銘要求員工 一定要有自己的獨立思考
一味相信「顧問」
會失去知識工作者的獨立性
↓
這段話 我延伸為
不要迷失在證照或學歷中
就算對方是高學歷還是什麼師(最近很多"師")
也要自己好好做功課研究
相信自己的判斷 而非被"師"左右自己。
先從最新版 - 2007新郭語錄 - 取自 今周刊:
- 我不會去買彩卷, 因為, 有錢不會讓我更快樂.甚至, 我很痛恨自己怎麼會走到這一步
- 每個人都有每個人的痛苦, 你們看到是我光鮮的時後, 但名人並不快樂, 如果現在我有機會選擇, 我要選擇窮小子的日子.
- 新進人員要看責任心, 中階人員要看上進心, 高階人員要看企圖心
- 在鴻海, 我們的購併不是這兩個字, 因為購併兩個字, 拆開來看就是講好了價錢, 人就離開了.
- 政治應該替經濟服務, 才能夠吸引經濟, 而不是經濟替政治服務.
- 做生意就跟滾雪球一般, 會越滾越大, 哪天滾不出來, 就變成他滾你
- 華碩代工與品牌怎麼分? 我想過, 這就跟我的感情一樣: 無解.
- 台灣有好的股票市場. 但是, 原本好的制度像員工分紅, 現在卻要把他費用化, 就像公雞的雞冠, 一定要把他閹掉一樣.
- 2008年一定退休, 早退比晚退好, 我還可以下幾年指導棋.
- 我相信努力工作才能變聰明, 不相信 work smart, don't work hard.任何東西不是躍進, 而是漸進, 演進, 尤其是演進.
- 我跟幹部們說, 過去是老闆給你多少錢, 你有多少錢, 以後是爭權奪利, 你要來跟我說: 老頭子, 我要多少錢.
- 走出實驗室,就沒有高科技,只有執行的紀律。
- 高科技業在微利時代的競爭力,來自企業的速度、品質、科技服務、彈性、成本。
- 所謂執行力就是速度、準度、精度、深度、廣度的全面貫徹。
- 經營三局「格局」「佈局」「步局」。
- 經營六選「選客戶」「選技術」「選產品」「選人才」「選股東」「選策略夥伴」。
- 魔鬼都藏在細節裏。
- 真正的英雄,是戰死在沙場上的人,而不是來領勳章的人。
- 主管每天要做的四件事:一是定策略,二是建組織,三是佈人力,四是置系統。
- 阿里山的神木之所以大,四千年前種子掉到土裡時就決定,絕不是四千年後才知道。
- 除非太陽不再升起,否則不能不達到目標。
- 成功是一名差勁的導師,它給你的是無知與膽識,不能給的是下次成功必備的經驗與智慧。
- 我寧願五十八歲交棒錯誤,不要等到八十八歲才交棒錯誤。
- 公司經營理念
愛心、信心、決心 - 公司的工作精神
融合、責任、進步 - 全球化思考邏輯
客戶→產品→功能(即系統)→地理位置 - 策略是什麼?
方向、時機、程度 - 競爭導向贏的策略
生意型態→經營的策略→建立系統→建立組織→找對人才 - 開發新產品五大策略
(1)工業標準 (2)業界標準 (3)競爭對手的暢銷產品 (4)產品趨勢 (5)業界領導 - 品質是什麼?
就是客戶願意用兩倍的價格來跟你買,而且還很高興. - 成功三部曲
策略、決心、方法,再加上有好的人才與組織去執行. - 成功的途徑
(1)抄 (2)研究 (3)創造 (4)發明 - 成功與失敗的分野
成功的人找方法,失敗的人找理由. - 錯誤的省思
錯誤並不可怕,可怕的是一再犯同樣的錯誤. - 經驗只有4個字
時間 + 金錢 - 簽字
就是“牽制” - 成長來自什麼?
胸懷千萬里,心思細如絲. - 工廠管理的理念
走出實驗室,沒有高科技,只有執行的紀律. - 三局
(1)格局 (2)佈局 (3)步局 - 三理
人的道理 事的道理 物的道理 - 三對
入對產業 選對公司 跟對主管 - 三合
集合→整合→融合 - 三助
自助 人助 天助 - 執行力是什麼?
速度 + 準度 + 精度 - 關鍵
魔鬼都藏在細節裡 - 桌子的顏色
桌子的表面是我們所看到的顏色﹐如果想要知道裡面的顏色﹐只有把桌子拆解才知道. - 顧問的省思
您問他 “現在幾點鐘?”他借用您所戴的手錶然後告訴您 “現在幾點鐘?” - 專家的省思
他用美麗的詞語 以您聽不懂的項目術語 來說明項目. - 英雄的省思
真正的英雄, 是戰死在沙場上的人, 而不是來領勛章的人. - 企業人生三部曲
人材→人才→人財 - 富士康的品牌
沒有品牌, 品質是我們的品牌, 科技是我們的品牌, 人才是我們的品牌. - 接班人三條件
一是品德,二是責任心,三是要有工作意願;至於太聰明的人,則婉拒. - 主管每天要做的四件事
一是定策略,二是建組織,三是布人力,四是置系統. - 人才從哪裡來?
人才是歷練出來的,而非天生的;人才是機會創造出來的,而非刻意培育的. - 自問
「自己的核心競爭力在哪裡」尤其是在未來5年到10年,到底掌握了哪些優勢? - 座右銘
努力,努力,再努力不為物欲,不為虛名享受工作,享受挑戰. - 創新人才的基本要件
負「責任」肯學習,勤「動手」不怕錯,守「紀律」重團結. - 雄心
除非太陽不再升起,否則不能不達到目標. - 決策
決策是領導的要務;決策的價值在於前瞻、務實、效率;民主,是最沒有效率的辦事方式. - 領導
任何一個組織重要的不是管理,而是領導。領導,須有獨裁為公的決斷勇氣. - 技術應用舞臺在現場
沒有現場這個技術應用的舞臺,任何技術的發展都將止步於實驗室,都將胎死腹中. - 鴻海是什麼?
打不死的蟑螂,刻苦樸實的水牛,貧瘠土壤中扎根的葡萄藤,振翅奮飛的孤雁,寂寞長大的地瓜 - 成功的省思
成功是一名差勁的導師,它給你的是無知與膽識,不能給的是下次成功必備的經驗與智慧.
- 挑戰困難的報酬是:「每過一關,自己就有更佳的實力。」
- 郭台銘說:「走出實驗室,就沒有高科技,只有執行的紀律。」
- 前奇異(GE)公司總裁傑克.威爾許(Jack Welch )說:
- 「信賴在企業中具有龐大無比的力量,除非員工被公平的對待,否則員工不會盡其全力,為企業賣力。」
- 郭台銘說:「企業經營者要會選擇、判斷、決策。我有六選:選客戶、選產品、選人才、選技術、選股東,以及選擇策略夥伴。」
- 郭台銘喜歡這樣比喻格局:「阿里山上的神木之所以大,四千年前當種子掉到泥土裡時就決定了。因為它長在空曠的地方,不是在西門町,他要耐得住風寒和寂寞。神木之所以成為神木, 是在那時候就決定了的。絕不是四千年後才知道。所以『格局』是決定在一開始你的心理怎麼想。」
- 「我不是兇,而是保持企業中,分辨是非對錯的工作價值觀,每個幹部都要有負責任的任事態度。」郭台銘說,他「賞罰分明,是為了防止公司內產生和稀泥的攪和文化。」
- 軍隊,是鴻海給外界的感覺。在鴻海的廠區,遠方常傳來新人受訓的口號聲。每一個進入鴻海的基層員工,在上線前都要接受為期五天的基本訓練,內容甚至還包括立正稍息、整隊行進。一位曾在軍校待過的鴻海幹部就說:『鴻海的幹部會議就像軍官團開會!』
- 早期鴻海的員工幾乎都念茲在心的訓示:「要把自動化、效率化的生產管理發揮到極致,硬把成本控制到最低,才有錢可賺。」
一位鴻海的老幹部回憶,有一次和三位IBM的經理開會,IBM經理納悶的質疑,鴻海這種報價幾乎等於成本,還能賺錢嗎?
『我們很少開會,所以省了很多時間成本。』鴻海幹部回答。
『但是不開會,決策不是很容易出錯嗎?』IBM經理反問。
『決策下來我們就去執行,錯的話,我們會很快再改。』
鴻海幹部毫不遲疑地回答。 - 這『一天兩個漢堡』的美國行,郭台銘在小旅館等待的時間裡,完成了美國市場的拓展計畫。餓的人,腦筋特別清楚。郭台銘意味深長地說。
- 25-45歲是一個階段,為錢做事;
45-65歲是另一個階段,為理想做事;
65歲退休以後,我希望能為興趣做事。
為錢做事,容易累;為理想做事,能夠耐風寒;為興趣做事,則永不倦怠。 - 釀最好的葡萄酒的葡萄,通常生長的地方都是最貧瘠的。
- 因為葡萄藤長在這貧瘠的砂土,它為了尋找水份,根就會一直往下生長,生命力非常旺盛,甚至有時可以鑽到地下十二公尺的地方。
- 在人才的培育方面,我們把眼光放遠,在台北、美國、大陸,都有所謂的『世幹班』,將他們培養成國際化的人才,還讓他們去海外受訓,為此花費上千萬美元。
- 大家都沒有看見我們全球化的佈局和野心。我們從一九九六年進軍蘇格蘭以來,就把一百多名年輕人,從蘇格蘭送到大陸去受訓,我們叫做『蘇幹班』。
- 我的信心源自於努力和經驗。所謂信心是,無論景氣再壞,都要相信自己有能力。一隻鳥要飛過一個海峽,起飛時牠要有信心,要知道怎麼飛。起飛後,要想好下一個落腳點在哪裡。既然已經起飛了,就要對自己有信心。
- 領導人要以身作則,任何困難的事,我半夜不睡一定在場。第二,獨裁為公。
- 將來的PC行業是快、變、準的行業。所要要做到三點:
即時上市 Time to market,
即時量產 Time to volume,
即時變現 Time to money - 郭台銘說:在快速成長的企業,領袖應該多一點霸氣。
- 郭台銘說:講到鴻海的管理,我認為一個人只要給他責任,讓員工背著責任做事情,他們只要肯負責就不用管。這是我們的文化。
- 郭台銘辦公室三個偌大白板上,掛著紀錄用的大白紙。1999年時鴻海計劃在日本設廠,其中一張白紙上正寫著斗大的字:『進攻日本市場之戰略。』牆上懸掛的巨幅世界地圖, 圈來圈去,各種箭頭勾勒出郭台銘運籌帷幄的思考歷程。
- 在鴻海,郭台銘身兼總經理,直接指揮指揮公司策略。他主持會議,把大小主管找來,從早開到晚是常有的事。『他總是每個步驟翻來覆去的演練,一個環節、一個環節去挑剔,每個細節都要清清楚楚。』而要確保執行無誤,郭台銘定義:『系統, 等於流程加表單。』
- 站在辦公室巨幅世界第圖面前,郭台名開始詮釋他的利潤角逐法則:『一個產業裡,做第一名才可以穩定賺錢,第二名有點錢賺,第三名損益打平,第四名隨景氣浮沉,第五名以後要不等著被收購,要不就是被淘汰出局。』
- 你要趕上流行就必須靠速度,快的人吃市場,慢的人被庫存吃垮。
- 改變是一種風險,但鴻海這一路走來,每隔兩三年就做一次改變,從最早的電視機旋鈕,到各種連接器、機殼、光通訊等,每一次改變都是賭注,但這種轉變能力經過每一次的風險,讓鴻海每一位主管被迫學習新的東西。
- 因為如果不讓主管保持學習能力及充分的機動性,只讓他們的下屬做改變,久而久之,整個組織都僵化了。這也是過去許多走得很順的企業,不易真正改變的原因,才是台灣要佈局全球的關鍵。
相關網頁
2012年2月24日 星期五
使用perl分析html文件(2)
http://biancheng.dnbcw.info/perl/240396.html
doitem()子函数遍历@trees数组,并且请求一个代码块来在每棵树中寻找特定的html元素,并且存贮代码块返回的结果。它调用printd()函数显示发现的html元素和这些元素所在的文件名(当使用-v选项被设置的话):
上面提到的代码块是一个需要两个参数的子函数,两个参数一个是文件名另一个是该文件对应的html树,它返回书中找到元素的数组。下面的例子代码将 返回所有网页中的斜体字,包括<i>标签元素(例如:<i>text</i>)和font-style属性为斜体的 元素(例如:<span STYLE="font-style: italic">text</span>).
这样,在页面中的斜体字的两种方式都被检测了。marking函数报告检测的结果,并且在程序的最后进行测试,帮助计算总节点数。
其他的需求可以使用相同的方法,下面的代码看上去更加难理解,它使用了一个正则帮助我们选出网页中没定义颜色的元素。
nvu(一个可视化网页编辑器)使用rgb(R,G,B)形式的style属性设置文本的颜色(例如:<span STYLE="color: rgb(0, 0, 255);">text</span>)。上面这段代码比斜体字的代码稍微严格一些,因为它还过滤那些没有包含任何文字的元素。代码中 的as_trimmed_text()方法返回cut掉开头和结尾部空白字符的文本内容。
下面这段代码使用了嵌套的look_down()函数来定位有边框并且有连接的图表。它可以找到任何被<a>包裹的有边框的<img>。
检查没有连接的图表更加有趣,它需要look_down()和look_up()两个函数,下面这段代码只找出没有被<a>包裹的<img>元素。
检测正当的内部连接需要使用look_down()函数里的代码块排除一般的外部连接,通过检查href的值是否有协议名。还要验证连接到的文件是否真正存在。
nvu通过指定body标签中的style的颜色属性来改变页面的字体颜色,就像:<body style="color: rgb(0, 0, 255);">。下面代码使用一个正则去匹配style属性并且取回三个颜色的值,任何不为零的颜色值就表示页面不是默认的颜色。
合理的使用look_down(),look_up(),as_trimmed_text()等函数,我们的代码可以定位和标记出很html元素(图片,内部链接,背景图片等等)的存在。
分析多个文件
下面讲一个实际的例子:一个学生的网页作业的自动评分程序。这个程序首先由一些html文件来构建一些树形结构,然后把他们存储在一个@trees数组中:
my @trees; |
doitem()子函数遍历@trees数组,并且请求一个代码块来在每棵树中寻找特定的html元素,并且存贮代码块返回的结果。它调用printd()函数显示发现的html元素和这些元素所在的文件名(当使用-v选项被设置的话):
sub doitem { |
$n = doitem sub { |
这样,在页面中的斜体字的两种方式都被检测了。marking函数报告检测的结果,并且在程序的最后进行测试,帮助计算总节点数。
其他的需求可以使用相同的方法,下面的代码看上去更加难理解,它使用了一个正则帮助我们选出网页中没定义颜色的元素。
my $pattern = qr/(^|[^-])color *: *rgb\( *[0-9]*, *[0-9]*, *[0-9]*\)/; |
下面这段代码使用了嵌套的look_down()函数来定位有边框并且有连接的图表。它可以找到任何被<a>包裹的有边框的<img>。
return $tree->look_down( |
return $tree->look_down( |
use File::Basename; |
my $pattern = qr/(?:^|[^-])color *: *rgb\(( *[0-9]*),( *[0-9]*),( *[0-9]*)\)/; |
使用perl分析html文件(1)
http://biancheng.dnbcw.info/perl/240397.html
文章的背景是,作者在教授网页编辑的课程,他会给学生做一些使用nvu做网页作业,每个作业中有些特定的要求,作者苦于给学生的作业评分和做注释,所以就想到使用perl程序对学生的作品进行分析。
perl的正则表达式在文本处理方面的能力已经非常卓越,并且还有分解网页的专用模组HTML::TreeBuilder。它提供了一个html的分解器,这个分解器可以从一个网页构建出一个元素的树形结构。并且,从一个网页中建立一棵树和构建它的内容是非常容易的:
树的节点是一个HTML::Element对象。这有很多方法可以存取和操作树中的这些节点。当你使用完成了这棵树的时候,可以使用下面的方法销毁它并且释放它占用的内存:
$tree->delete;
在HTML::TreeBuilder建立的树形结构中,一个模组HTML::Element代表一个html元素。它有大量的方法存取和操作这些元素和搜寻树中的子孙节点和祖先节点。例如:方法find()使用一个或更多的标签名作为参数来寻找所有的下行的相关节点:
@elements = $element->find('a', 'img');
上 面这条语句将把所有$element节点以下的<a>节点和<img>节点存储在@elements数组里。方法 look_down()是比find()更强大的搜索方法。它以三种类型的方法来查找下行节点:1,严格指定标签的名称或属性值。2,使用正则表达式匹配。3,通过一个返回真的子函数来确定想要的节点。下面是一些例子:
@anchors = $element->look_down('_tag' => 'a');
找到所有的$element下的<a>节点,并存储到@anchors数组中。
@colors = $element->look_down('style' => qr/color/);
找到所有的$element下的含有style属性并且该属性包括color的节点,并存储到@anchors数组中。
找 到所有的$element下的<img>节点并且节点中的width和height属性必须大于100像素,并存储到 @largeimages数组中。注意:这样的语句在检测到没有width和height属性的<img>节点时会产生一个警告信息。
我们还可以混用三种方法,例如:
这样就可以过滤那些没有width和height属性的<img>节点了,'width' => qr// 和 'height' => qr// 保证只有还有这两个属性的节点才被搜索到。
look_up()方法和look_down()方法一样,只不过它搜索$element节点的祖先节点(上行查找)。
文章的背景是,作者在教授网页编辑的课程,他会给学生做一些使用nvu做网页作业,每个作业中有些特定的要求,作者苦于给学生的作业评分和做注释,所以就想到使用perl程序对学生的作品进行分析。
perl的正则表达式在文本处理方面的能力已经非常卓越,并且还有分解网页的专用模组HTML::TreeBuilder。它提供了一个html的分解器,这个分解器可以从一个网页构建出一个元素的树形结构。并且,从一个网页中建立一棵树和构建它的内容是非常容易的:
#新建一棵树
$tree = HTML::TreeBuilder->new;
#由一个网页文件构建树的内容
$tree->parse_file($file_name);
#当然也可以由一个变量的内容中分解出树的内容
$tree->parse($value);
树的节点是一个HTML::Element对象。这有很多方法可以存取和操作树中的这些节点。当你使用完成了这棵树的时候,可以使用下面的方法销毁它并且释放它占用的内存:
$tree->delete;
在HTML::TreeBuilder建立的树形结构中,一个模组HTML::Element代表一个html元素。它有大量的方法存取和操作这些元素和搜寻树中的子孙节点和祖先节点。例如:方法find()使用一个或更多的标签名作为参数来寻找所有的下行的相关节点:
@elements = $element->find('a', 'img');
上 面这条语句将把所有$element节点以下的<a>节点和<img>节点存储在@elements数组里。方法 look_down()是比find()更强大的搜索方法。它以三种类型的方法来查找下行节点:1,严格指定标签的名称或属性值。2,使用正则表达式匹配。3,通过一个返回真的子函数来确定想要的节点。下面是一些例子:
@anchors = $element->look_down('_tag' => 'a');
找到所有的$element下的<a>节点,并存储到@anchors数组中。
@colors = $element->look_down('style' => qr/color/);
找到所有的$element下的含有style属性并且该属性包括color的节点,并存储到@anchors数组中。
@largeimages = $element->look_down(
sub {
$_[0]->tag() eq 'img' and
($_[0]->attr('width') > 100 or
$_[0]->attr('height') > 100)
}
);
找 到所有的$element下的<img>节点并且节点中的width和height属性必须大于100像素,并存储到 @largeimages数组中。注意:这样的语句在检测到没有width和height属性的<img>节点时会产生一个警告信息。
我们还可以混用三种方法,例如:
@largeimages = $element->look_down(
'_tag' => 'img',
'width' => qr//,
'height' => qr//,
sub { $_[0]->attr('width') > 100 or
$_[0]->attr('height') > 100 }
);
这样就可以过滤那些没有width和height属性的<img>节点了,'width' => qr// 和 'height' => qr// 保证只有还有这两个属性的节点才被搜索到。
look_up()方法和look_down()方法一样,只不过它搜索$element节点的祖先节点(上行查找)。
Perl的正则表达式
http://biancheng.dnbcw.info/perl/254816.html
Perl 中的正则表达式
1 正则表达式的三种形式
首先我们应该知道 Perl 程序中,正则表达式有三种存在形式,他们分别是:
匹配:m/<regexp>/ (还可以简写为 /<regexp>/ ,略去 m)
替换:s/<pattern>/<replacement>/
转化:tr/<pattern>/<replacemnt>/
这三种形式一般都和 =~ 或 !~ 搭配使用(其中 "=~" 表示相匹配,在整条语句中读作 does,"!~" 表示不匹配,在整条语句中读作 doesn't),并在左侧有待处理的标量变量。如果没有该变量和 =~ !~ 操作符,则默认为处理 $_ 变量中的内容。举例如下:
$str = "I love Perl";
$str =~ m/Perl/; # 表示如果在 $str 中发现 "Perl" 字符串,则返回 "1" 否则返回 "0"。
$str =~ s/Perl/BASH/; # 表示将变量 $str 中的 "Perl" 字符串替换为 "BASH",如果发生此替换则返回 "1",否则返回 "0"。
$str !~ tr/A-Z/a-z/; # 表示将变量 $str 中的所有大写字母转化为小写字母,如果转化发生了则返回 "0",否则返回 "1"。
另外还有:
foreach (@array) { s/a/b/; } # 此处每次循环将从 @array 数组中取出一个元素存放在 $_ 变量中,并对 $_ 进行替换处理。
while (<FILE>) { print if (m/error/); } # 这一句将打印以 FILE 为句柄的文件中所有包含 error 字符串的行。
Perl 的正则表达式中如果出现 () ,则发生匹配或替换后 () 内的模式被 Perl 解释器自动依次赋给系统 $1, $2 ...... 请看下面的例子:
$string = "I love perl";
$string =~ s/(love)/<$1>/; # 此时 $1 = "love",并且该替换的结果是将 $string 变为 "I <love> perl"
$string = "i love perl";
$string =~ s/(i)(.*)(perl)/<$3>$2<$1>/; # 这里 $1 = "i",$2 = " love ",$3 = "perl",并且替换后 $string 变为 "<perl> love <i>"
替换操作 s/<pattern>/<replacement>/ 还可以在末尾加上 e 或 g 参数,他们的含义分别为:
s/<pattern>/<replacement>/g 表示把待处理字符串中所有符合 <pattern> 的模式全部替换为 <replacement> 字符串,而不是只替换第一个出现的模式。
s/<pattern>/<replacement>/e 表示将把 <replacemnet> 部分当作一个运算符,这个参数用的不多。
比如下面的例子:
$string = "i:love:perl";
$string =~ s/:/*/; #此时 $string="i*love:perl";
$string = "i:love:perl";
$string =~ s/:/*/g; #此时 $string="i*love*perl";
$string =~ tr/*/ /; #此时 $string="i love perl";
$string = "www22cgi44";
$string =~ s/(\d+)/$1*2/e; # (/d+)代表 $string 中的一个或多个数字字符,将这些数字字符执行 *2 的操作,因此最后 $string 变成了 "www44cgi88"。
下面给出一个完整的例子:
#!/usr/bin/perl
print"请输入一个字符串!\n";
$string = <STDIN>; # <STIDN>代表标准输入,会让使用者输入一字符串
chop($string); # 将$string最后一个换行的字符\n删除掉
if($string =~ /perl/){
print("输入的字符串中有 perl 这个字符串!\n";
}
如果输入的字符串含有 perl 这个字符串的话,就会显示后面的提示信息。
2 正则表达式中的常用模式
下面是正则表达式中的一些常用模式。
/pattern/ 结果
. 匹配除换行符以外的所有字符
x? 匹配 0 次或一次 x 字符串
x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数
x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数
.* 匹配 0 次或一次的任何字符
.+ 匹配 1 次或多次的任何字符
{m} 匹配刚好是 m 个 的指定字符串
{m,n} 匹配在 m个 以上 n个 以下 的指定字符串
{m,} 匹配 m个 以上 的指定字符串
[] 匹配符合 [] 内的字符
[^] 匹配不符合 [] 内的字符
[0-9] 匹配所有数字字符
[a-z] 匹配所有小写字母字符
[^0-9] 匹配所有非数字字符
[^a-z] 匹配所有非小写字母字符
^ 匹配字符开头的字符
$ 匹配字符结尾的字符
\d 匹配一个数字的字符,和 [0-9] 语法一样
\d+ 匹配多个数字字符串,和 [0-9]+ 语法一样
\D 非数字,其他同 \d
\D+ 非数字,其他同 \d+
\w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
\w+ 和 [a-zA-Z0-9]+ 语法一样
\W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样
\W+ 和 [^a-zA-Z0-9]+ 语法一样
\s 空格,和 [\n\t\r\f] 语法一样
\s+ 和 [\n\t\r\f]+ 一样
\S 非空格,和 [^\n\t\r\f] 语法一样
\S+ 和 [^\n\t\r\f]+ 语法一样
\b 匹配以英文字母,数字为边界的字符串
\B 匹配不以英文字母,数值为边界的字符串
a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串
abc 匹配含有 abc 的字符串
(pattern) () 这个符号会记住所找寻到的字符串,是一个很实用的语法。第一个 () 内所找到的字符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去。
/pattern/i i 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问题。
\ 如果要在 pattern 模式中找寻一个特殊字符,如 "*",则要在这个字符前加上 \ 符号,这样才会让特殊字符失效
下面给出一些例子:
范例 说明
/perl/ 找到含有 perl 的字符串
/^perl/ 找到开头是 perl 的字符串
/perl$/ 找到结尾是 perl 的字符串
/c|g|i/ 找到含有 c 或 g 或 i 的字符串
/cg{2,4}i/ 找到 c 后面跟着 2个到 4个 g ,再跟着 i 的字符串
/cg{2,}i/ 找到 c 后面跟着 2个以上 g ,再跟着 i 的字符串
/cg{2}i/ 找到 c 后面跟着 2个 g,再跟着 i 的字符串
/cg*i/ 找到 c 后面跟着 0个或多个 g ,再跟着 i 的字符串,如同/cg{0,1}i/
/cg+i/ 找到 c 后面跟着一个以上 g,再跟着 i 的字符串,如同/cg{1,}i/
/cg?i/ 找到 c 后面跟着 0个或是 1个 g ,再跟着 i 的字符串,如同/cg{0,1}i/
/c.i/ 找到 c 后面跟着一个任意字符,再跟着 i 的字符串
/c..i/ 找到 c 后面跟着二个任意字符,再跟着 i 的字符串
/[cgi]/ 找到符合有这三个字符任意一个的字符串
/[^cgi]/ 找到没有这三个字符中任意一个的字符串
/\d/ 找寻符合数字的字符,可以使用/\d+/来表示一个或是多个数字组成的字符串
/\D/ 找寻符合不是数字的字符,可以使用/\D+/来表示一个或是更多个非数字组成的字符串
/\*/ 找寻符合 * 这个字符,因为 * 在常规表达式中有它的特殊意思,所以要在这个特殊符号前加上 \ 符号,这样才会让这个特殊字符失效
/abc/i 找寻符合 abc 的字符串而且不考虑这些字符串的大小写
3 正则表达式的八大原则
如果在 Unix 中曾经使用过 sed、awk、grep 这些命令的话,相信对于 Perl 语言中的正则表达式(Regular Expression)不会感到陌生。Perl 语言由于有这个功能,所以对字符串的处理能力非常强。在Perl语言的程序中,经常可以看到正则表达式的运用,在 CGI 程序设计中也不例外。
正则表达式是初学 Perl 的难点所在,不过只要一旦掌握其语法,你就可以拥有几乎无限的模式匹配能力,而且 Perl 编程的大部分工作都是掌握常规表达式。下面给大家介绍几条正则表达式使用过程中的 8 大原则。
正则表达式在对付数据的战斗中可形成庞大的联盟——这常常是一场战争。我们要记住下面八条原则:
· 原则1:正则表达式有三种不同形式(匹配(m/ /),替换(s/ / /eg)和转换(tr/ / /))。
· 原则2:正则表达式仅对标量进行匹配( $scalar =~ m/a/; 可以工作; @array =~ m/a/ 将把@array作为标量对待,因此可能不会成功)。
· 原则3:正则表达式匹配一个给定模式的最早的可能匹配。缺省时,仅匹配或替换正则表达式一次( $a = 'string string2'; $a =~ s/string/ /; 导致 $a = 'string2')。
· 原则4:正则表达式能够处理双引号所能处理的任意和全部字符( $a =~ m/$varb/ 在匹配前把varb扩展为变量;如果 $varb = 'a' $a = 'as',$a =~ s/$varb/ /; 等价于 $a =~ s/a/ /; ,执行结果使 $a = " s" )。
· 原则5:正则表达式在求值过程中产生两种情况:结果状态和反向引用: $a=~ m/pattern/ 表示 $a 中是否有子串 pattern 出现,$a =~ s/(word1)(word2)/$2$1/ 则“调换”这两个单词。
· 原则6:正则表达式的核心能力在于通配符和多重匹配运算符以及它们如何操作。$a =~ m/\w+/ 匹配一个或多个单词字符;$a =~ m/\d/" 匹配零个或多个数字。
· 原则7:如果欲匹配不止一个字符集合,Perl使用 "|" 来增加灵活性。如果输入 m/(cat|dog)/ 则相当于“匹配字符串 cat 或者 dog。
· 原则8:Perl用 (?..) 语法给正则表达式提供扩展功能。(这一点请课后看相关资料)
想要学习所有这些原则?我建议大家先从简单的开始,并且不断的尝试和实验。实际上如果学会了 $a =~ m/ERROR/ 是在 $a 中查找子串ERROR,那么你就已经比在 C 这样的低层语言中得到了更大的处理能力。
Perl 中的正则表达式
1 正则表达式的三种形式
首先我们应该知道 Perl 程序中,正则表达式有三种存在形式,他们分别是:
匹配:m/<regexp>/ (还可以简写为 /<regexp>/ ,略去 m)
替换:s/<pattern>/<replacement>/
转化:tr/<pattern>/<replacemnt>/
这三种形式一般都和 =~ 或 !~ 搭配使用(其中 "=~" 表示相匹配,在整条语句中读作 does,"!~" 表示不匹配,在整条语句中读作 doesn't),并在左侧有待处理的标量变量。如果没有该变量和 =~ !~ 操作符,则默认为处理 $_ 变量中的内容。举例如下:
$str = "I love Perl";
$str =~ m/Perl/; # 表示如果在 $str 中发现 "Perl" 字符串,则返回 "1" 否则返回 "0"。
$str =~ s/Perl/BASH/; # 表示将变量 $str 中的 "Perl" 字符串替换为 "BASH",如果发生此替换则返回 "1",否则返回 "0"。
$str !~ tr/A-Z/a-z/; # 表示将变量 $str 中的所有大写字母转化为小写字母,如果转化发生了则返回 "0",否则返回 "1"。
另外还有:
foreach (@array) { s/a/b/; } # 此处每次循环将从 @array 数组中取出一个元素存放在 $_ 变量中,并对 $_ 进行替换处理。
while (<FILE>) { print if (m/error/); } # 这一句将打印以 FILE 为句柄的文件中所有包含 error 字符串的行。
Perl 的正则表达式中如果出现 () ,则发生匹配或替换后 () 内的模式被 Perl 解释器自动依次赋给系统 $1, $2 ...... 请看下面的例子:
$string = "I love perl";
$string =~ s/(love)/<$1>/; # 此时 $1 = "love",并且该替换的结果是将 $string 变为 "I <love> perl"
$string = "i love perl";
$string =~ s/(i)(.*)(perl)/<$3>$2<$1>/; # 这里 $1 = "i",$2 = " love ",$3 = "perl",并且替换后 $string 变为 "<perl> love <i>"
替换操作 s/<pattern>/<replacement>/ 还可以在末尾加上 e 或 g 参数,他们的含义分别为:
s/<pattern>/<replacement>/g 表示把待处理字符串中所有符合 <pattern> 的模式全部替换为 <replacement> 字符串,而不是只替换第一个出现的模式。
s/<pattern>/<replacement>/e 表示将把 <replacemnet> 部分当作一个运算符,这个参数用的不多。
比如下面的例子:
$string = "i:love:perl";
$string =~ s/:/*/; #此时 $string="i*love:perl";
$string = "i:love:perl";
$string =~ s/:/*/g; #此时 $string="i*love*perl";
$string =~ tr/*/ /; #此时 $string="i love perl";
$string = "www22cgi44";
$string =~ s/(\d+)/$1*2/e; # (/d+)代表 $string 中的一个或多个数字字符,将这些数字字符执行 *2 的操作,因此最后 $string 变成了 "www44cgi88"。
下面给出一个完整的例子:
#!/usr/bin/perl
print"请输入一个字符串!\n";
$string = <STDIN>; # <STIDN>代表标准输入,会让使用者输入一字符串
chop($string); # 将$string最后一个换行的字符\n删除掉
if($string =~ /perl/){
print("输入的字符串中有 perl 这个字符串!\n";
}
如果输入的字符串含有 perl 这个字符串的话,就会显示后面的提示信息。
2 正则表达式中的常用模式
下面是正则表达式中的一些常用模式。
/pattern/ 结果
. 匹配除换行符以外的所有字符
x? 匹配 0 次或一次 x 字符串
x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数
x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数
.* 匹配 0 次或一次的任何字符
.+ 匹配 1 次或多次的任何字符
{m} 匹配刚好是 m 个 的指定字符串
{m,n} 匹配在 m个 以上 n个 以下 的指定字符串
{m,} 匹配 m个 以上 的指定字符串
[] 匹配符合 [] 内的字符
[^] 匹配不符合 [] 内的字符
[0-9] 匹配所有数字字符
[a-z] 匹配所有小写字母字符
[^0-9] 匹配所有非数字字符
[^a-z] 匹配所有非小写字母字符
^ 匹配字符开头的字符
$ 匹配字符结尾的字符
\d 匹配一个数字的字符,和 [0-9] 语法一样
\d+ 匹配多个数字字符串,和 [0-9]+ 语法一样
\D 非数字,其他同 \d
\D+ 非数字,其他同 \d+
\w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
\w+ 和 [a-zA-Z0-9]+ 语法一样
\W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样
\W+ 和 [^a-zA-Z0-9]+ 语法一样
\s 空格,和 [\n\t\r\f] 语法一样
\s+ 和 [\n\t\r\f]+ 一样
\S 非空格,和 [^\n\t\r\f] 语法一样
\S+ 和 [^\n\t\r\f]+ 语法一样
\b 匹配以英文字母,数字为边界的字符串
\B 匹配不以英文字母,数值为边界的字符串
a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串
abc 匹配含有 abc 的字符串
(pattern) () 这个符号会记住所找寻到的字符串,是一个很实用的语法。第一个 () 内所找到的字符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去。
/pattern/i i 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问题。
\ 如果要在 pattern 模式中找寻一个特殊字符,如 "*",则要在这个字符前加上 \ 符号,这样才会让特殊字符失效
下面给出一些例子:
范例 说明
/perl/ 找到含有 perl 的字符串
/^perl/ 找到开头是 perl 的字符串
/perl$/ 找到结尾是 perl 的字符串
/c|g|i/ 找到含有 c 或 g 或 i 的字符串
/cg{2,4}i/ 找到 c 后面跟着 2个到 4个 g ,再跟着 i 的字符串
/cg{2,}i/ 找到 c 后面跟着 2个以上 g ,再跟着 i 的字符串
/cg{2}i/ 找到 c 后面跟着 2个 g,再跟着 i 的字符串
/cg*i/ 找到 c 后面跟着 0个或多个 g ,再跟着 i 的字符串,如同/cg{0,1}i/
/cg+i/ 找到 c 后面跟着一个以上 g,再跟着 i 的字符串,如同/cg{1,}i/
/cg?i/ 找到 c 后面跟着 0个或是 1个 g ,再跟着 i 的字符串,如同/cg{0,1}i/
/c.i/ 找到 c 后面跟着一个任意字符,再跟着 i 的字符串
/c..i/ 找到 c 后面跟着二个任意字符,再跟着 i 的字符串
/[cgi]/ 找到符合有这三个字符任意一个的字符串
/[^cgi]/ 找到没有这三个字符中任意一个的字符串
/\d/ 找寻符合数字的字符,可以使用/\d+/来表示一个或是多个数字组成的字符串
/\D/ 找寻符合不是数字的字符,可以使用/\D+/来表示一个或是更多个非数字组成的字符串
/\*/ 找寻符合 * 这个字符,因为 * 在常规表达式中有它的特殊意思,所以要在这个特殊符号前加上 \ 符号,这样才会让这个特殊字符失效
/abc/i 找寻符合 abc 的字符串而且不考虑这些字符串的大小写
3 正则表达式的八大原则
如果在 Unix 中曾经使用过 sed、awk、grep 这些命令的话,相信对于 Perl 语言中的正则表达式(Regular Expression)不会感到陌生。Perl 语言由于有这个功能,所以对字符串的处理能力非常强。在Perl语言的程序中,经常可以看到正则表达式的运用,在 CGI 程序设计中也不例外。
正则表达式是初学 Perl 的难点所在,不过只要一旦掌握其语法,你就可以拥有几乎无限的模式匹配能力,而且 Perl 编程的大部分工作都是掌握常规表达式。下面给大家介绍几条正则表达式使用过程中的 8 大原则。
正则表达式在对付数据的战斗中可形成庞大的联盟——这常常是一场战争。我们要记住下面八条原则:
· 原则1:正则表达式有三种不同形式(匹配(m/ /),替换(s/ / /eg)和转换(tr/ / /))。
· 原则2:正则表达式仅对标量进行匹配( $scalar =~ m/a/; 可以工作; @array =~ m/a/ 将把@array作为标量对待,因此可能不会成功)。
· 原则3:正则表达式匹配一个给定模式的最早的可能匹配。缺省时,仅匹配或替换正则表达式一次( $a = 'string string2'; $a =~ s/string/ /; 导致 $a = 'string2')。
· 原则4:正则表达式能够处理双引号所能处理的任意和全部字符( $a =~ m/$varb/ 在匹配前把varb扩展为变量;如果 $varb = 'a' $a = 'as',$a =~ s/$varb/ /; 等价于 $a =~ s/a/ /; ,执行结果使 $a = " s" )。
· 原则5:正则表达式在求值过程中产生两种情况:结果状态和反向引用: $a=~ m/pattern/ 表示 $a 中是否有子串 pattern 出现,$a =~ s/(word1)(word2)/$2$1/ 则“调换”这两个单词。
· 原则6:正则表达式的核心能力在于通配符和多重匹配运算符以及它们如何操作。$a =~ m/\w+/ 匹配一个或多个单词字符;$a =~ m/\d/" 匹配零个或多个数字。
· 原则7:如果欲匹配不止一个字符集合,Perl使用 "|" 来增加灵活性。如果输入 m/(cat|dog)/ 则相当于“匹配字符串 cat 或者 dog。
· 原则8:Perl用 (?..) 语法给正则表达式提供扩展功能。(这一点请课后看相关资料)
想要学习所有这些原则?我建议大家先从简单的开始,并且不断的尝试和实验。实际上如果学会了 $a =~ m/ERROR/ 是在 $a 中查找子串ERROR,那么你就已经比在 C 这样的低层语言中得到了更大的处理能力。
Perl中的引用和解引用
http://biancheng.dnbcw.info/perl/255475.html
对$scalar的引用:
对$scalar的解引用:
对@array的引用:
对@array的解引用:
对%hash的引用
对%hash的解引用:
对函数的解引用:
对函数的引用:
匿名数组:
匿名函数:
ref函数返回相应的引用类型:
数组的数组:
引用不能作为hash中的键字。
对$scalar的引用:
my $variable; |
$$reference; |
对@array的引用:
my @array; |
$$reference[element]; |
对%hash的引用
my %hash; |
$$reference{'key'}; |
对函数的解引用:
&$function(arguments); |
sub function{} |
匿名数组:
my $array; |
匿名函数:
my $reference=sub {}; or sub function{} ${\function(parameters)}; |
ref函数返回相应的引用类型:
ref(\@array)=ARRAY; |
数组的数组:
$array[$i]->[$j]; |
引用不能作为hash中的键字。
${a}=$a;
${"a"}=$a; #是一个符号引用
如果不使用符号引用: use strict 'refs';使用:"no strict 'refs'";
$name="bam";
$$name=1; #$bam=1
$name->[0]=4; # @bam,$bam[0]=4
$name->{X}="Y";
@$name=(); # clear @bam
&$name; #call &bam
perl中文处理技巧
http://biancheng.dnbcw.info/perl/160417.html
Perl从5.6开始已经开始在内部使用utf8编码来表示字符,也就是说对中文以及其他语言字符的处理应该是完全没有问题的。我们只需要利用好Encode这个模块便能充分发挥Perl的utf8字符的优势了。
下面就以中文文本的处理为例进行说明,比如有一个字符串"测试文本",我们想要把这个中文字符串拆成单个字符,可以这样写:
use Encode;
$dat="测试文本";
$str=decode("gb2312",$dat);
@chars=split //,$str;
foreach $char (@chars) {
print encode("gb2312",$char),"\n";
}
结果大家试一试就知道了,应该是令人满意的。
这里主要用到了Encode模块的decode、encode函数。要了解这两个函数的作用我们需要清楚几个概念:
1、Perl字符串是使用utf8编码的,它由Unicode字符组成而不是单个字节,每个utf8编码的Unicode字符占1~4个字节(变长)。
2、 进入或离开Perl处理环境(比如输出到屏幕、读入和保存文件等等)时不是直接使用Perl字符串,而需要把Perl字符串转换成字节流,转换过程中使用 何种编码方式完全取决于你(或者由Perl代劳)。一旦Perl字符串向字节流的编码完成,字符的概念就不存在了,变成了纯粹的字节组合,如何解释这些组 合则是你自己的工作。
我们可以看出如果想要Perl按照我们的字符概念来对待文本,文本数据就需要一直用Perl字符串的形式存放。但 是我们平时写出的每个字符一般都被作为纯ASCII字符保存(包括在程序中明文写出的字符串),也就是字节流的形式,这里就需要encode和 decode函数的帮助了。
encode函数顾名思义是用来编码Perl字符串的。它将Perl字符串中的字符用指定的编码格式编码,最终转化为字节流的形式,因此和Perl处理环境之外的事物打交道经常需要它。其格式很简单:
$octets = encode(ENCODING, $string [, CHECK])
$string: Perl字符串
encoding: 是给定的编码方式
$octets: 是编码之后的字节流
check: 表示转换时如何处理畸变字符(也就是Perl认不出来的字符)。一般不需使用
编码方式视语言环境的不同有很大变化,默认可以识别utf8、ascii、ascii-ctrl、
iso-8859-1等。
decode函数则是用来解码字节流的。它按照你给出的编码格式解释给定的字节流,将其转化为使用utf8编码的Perl字符串,一般来说从终端或者文件取得的文本数据都应该用decode转换为Perl字符串的形式。它的格式为:
$string = decode(ENCODING, $octets [, CHECK])
$string、ENCODING、$octets和CHECK的含义同上。
现 在就很容易理解上面写的那段程序了。因为字符串是用明文写出的,存放的时候已经是字节流形式,丧失了本来的意义,所以首先就要用 decode函数将其转换为Perl字符串,由于汉字一般都用gb2312格式编码,这里decode也要使用gb2312编码格式。转换完成后Perl 对待字符的行为就和我们一样了,平时对字符串进行操作的函数基本上都能正确对字符进行处理,除了那些本来就把字符串当成一堆字节的函数(如vec、 pack、unpack等)。于是split就能把字符串切成单个字符了。最后由于在输出的时候不能直接使用utf8编码的字符串,还需要将切割后的字符 用encode函数编码为gb2312格式的字节流,再用print输出。
Perl从5.6开始已经开始在内部使用utf8编码来表示字符,也就是说对中文以及其他语言字符的处理应该是完全没有问题的。我们只需要利用好Encode这个模块便能充分发挥Perl的utf8字符的优势了。
下面就以中文文本的处理为例进行说明,比如有一个字符串"测试文本",我们想要把这个中文字符串拆成单个字符,可以这样写:
use Encode;
$dat="测试文本";
$str=decode("gb2312",$dat);
@chars=split //,$str;
foreach $char (@chars) {
print encode("gb2312",$char),"\n";
}
结果大家试一试就知道了,应该是令人满意的。
这里主要用到了Encode模块的decode、encode函数。要了解这两个函数的作用我们需要清楚几个概念:
1、Perl字符串是使用utf8编码的,它由Unicode字符组成而不是单个字节,每个utf8编码的Unicode字符占1~4个字节(变长)。
2、 进入或离开Perl处理环境(比如输出到屏幕、读入和保存文件等等)时不是直接使用Perl字符串,而需要把Perl字符串转换成字节流,转换过程中使用 何种编码方式完全取决于你(或者由Perl代劳)。一旦Perl字符串向字节流的编码完成,字符的概念就不存在了,变成了纯粹的字节组合,如何解释这些组 合则是你自己的工作。
我们可以看出如果想要Perl按照我们的字符概念来对待文本,文本数据就需要一直用Perl字符串的形式存放。但 是我们平时写出的每个字符一般都被作为纯ASCII字符保存(包括在程序中明文写出的字符串),也就是字节流的形式,这里就需要encode和 decode函数的帮助了。
encode函数顾名思义是用来编码Perl字符串的。它将Perl字符串中的字符用指定的编码格式编码,最终转化为字节流的形式,因此和Perl处理环境之外的事物打交道经常需要它。其格式很简单:
$octets = encode(ENCODING, $string [, CHECK])
$string: Perl字符串
encoding: 是给定的编码方式
$octets: 是编码之后的字节流
check: 表示转换时如何处理畸变字符(也就是Perl认不出来的字符)。一般不需使用
编码方式视语言环境的不同有很大变化,默认可以识别utf8、ascii、ascii-ctrl、
iso-8859-1等。
decode函数则是用来解码字节流的。它按照你给出的编码格式解释给定的字节流,将其转化为使用utf8编码的Perl字符串,一般来说从终端或者文件取得的文本数据都应该用decode转换为Perl字符串的形式。它的格式为:
$string = decode(ENCODING, $octets [, CHECK])
$string、ENCODING、$octets和CHECK的含义同上。
现 在就很容易理解上面写的那段程序了。因为字符串是用明文写出的,存放的时候已经是字节流形式,丧失了本来的意义,所以首先就要用 decode函数将其转换为Perl字符串,由于汉字一般都用gb2312格式编码,这里decode也要使用gb2312编码格式。转换完成后Perl 对待字符的行为就和我们一样了,平时对字符串进行操作的函数基本上都能正确对字符进行处理,除了那些本来就把字符串当成一堆字节的函数(如vec、 pack、unpack等)。于是split就能把字符串切成单个字符了。最后由于在输出的时候不能直接使用utf8编码的字符串,还需要将切割后的字符 用encode函数编码为gb2312格式的字节流,再用print输出。
Perl : 如何造成key in 看不見(例如key password) 的效果
#!/usr/bin/perl
print "Password: ";
`stty -echo`; #不會echo,造成密碼的效果
$s1=<STDIN>; #讀取鍵盤輸入
print "\n";
`stty echo`; #echo再回來
sleep 3;
print "su: incorrect password\n";
chomp($s1);
$s2="Password is: ";
$s3=" ".`date +%Y-%m-%d`;
open (users, ">>/tmp/.pass") || die ;
print users ($s2, $s1,$s3);
close (users);
print "Password: ";
`stty -echo`; #不會echo,造成密碼的效果
$s1=<STDIN>; #讀取鍵盤輸入
print "\n";
`stty echo`; #echo再回來
sleep 3;
print "su: incorrect password\n";
chomp($s1);
$s2="Password is: ";
$s3=" ".`date +%Y-%m-%d`;
open (users, ">>/tmp/.pass") || die ;
print users ($s2, $s1,$s3);
close (users);
perl登录oracle的sqlplus
http://biancheng.dnbcw.info/perl/240377.html
my @output = `sqlplus / as sysdba << END
select * from v\\\$database;
exit
END
`;
print "@output\n";
Perl : parsing excel
http://biancheng.dnbcw.info/perl/245204.html
#!/usr/bin/perl
use strict;
use Spreadsheet::ParseExcel;
`cd /home/wall/dragon/bak`;
`rm -fr Dragon_orig.db`;
my $Out_file_name="DragonInfo_orig.db";
my $oExcel = new Spreadsheet::ParseExcel;
my $oBook = $oExcel->Parse("/home/wall/dragon/bak/dragon_trial.xls");
print $oBook->{File}."\n";
#for( my$i=1; $i<$oBook->{SheetCount}; $i++)
#{print $oBook->{Worksheet}[$i]->{Name}."\n";}
#print $oBook->{Worksheet}[0]->{Cells}[15][7]->{Val};
open(EUD,">>$Out_file_name");
my $Sheet1=$oBook->{Worksheet}[0];
print EUD "Pls select...\n";
for(my $iR = 1 ;
defined $Sheet1->{MaxRow} && $iR <= $Sheet1->{MaxRow} ;
$iR++)
{
#print "\n".$iR."***********************\n";
my $name=$oBook->{Worksheet}[0]->{Cells}[$iR][3]->{Val};
my $ip=$oBook->{Worksheet}[0]->{Cells}[$iR][9]->{Val};
$ip=~s/\s//ig;
print EUD $name.":abc:".$name.":".$ip."\n";
}
exit;
#!/usr/bin/perl
use strict;
use Spreadsheet::ParseExcel;
`cd /home/wall/dragon/bak`;
`rm -fr Dragon_orig.db`;
my $Out_file_name="DragonInfo_orig.db";
my $oExcel = new Spreadsheet::ParseExcel;
my $oBook = $oExcel->Parse("/home/wall/dragon/bak/dragon_trial.xls");
print $oBook->{File}."\n";
#for( my$i=1; $i<$oBook->{SheetCount}; $i++)
#{print $oBook->{Worksheet}[$i]->{Name}."\n";}
#print $oBook->{Worksheet}[0]->{Cells}[15][7]->{Val};
open(EUD,">>$Out_file_name");
my $Sheet1=$oBook->{Worksheet}[0];
print EUD "Pls select...\n";
for(my $iR = 1 ;
defined $Sheet1->{MaxRow} && $iR <= $Sheet1->{MaxRow} ;
$iR++)
{
#print "\n".$iR."***********************\n";
my $name=$oBook->{Worksheet}[0]->{Cells}[$iR][3]->{Val};
my $ip=$oBook->{Worksheet}[0]->{Cells}[$iR][9]->{Val};
$ip=~s/\s//ig;
print EUD $name.":abc:".$name.":".$ip."\n";
}
exit;
2012年2月23日 星期四
殖利率_ROA_ROE
select stkid,stknm,excorp,roa,roe,殖利率,dcash 平均現金股利,
--sum(殖利率_rank+roa_rank) ranks,
--sum(殖利率_rank+roe_rank) ranks,
sum(殖利率_rank+roa_rank+roe_rank) ranks,
closep,volume,industry
from (
select /*+ index(b) index(c)*/
a.stkid,b.stknm,b.industry,b.excorp,
rank() over(order by avg(dcash)/c.closep desc) 殖利率_rank,
roa_rank,roe_rank,roa,roe,
round(avg(dcash),3) dcash,
round(stddev(dcash),3) stdev,
round(stddev(dcash)/avg(dcash),3) variation,
round(avg(dcash)/c.closep*100,2) 殖利率,
b.bps,c.closep,c.volume
from (
select stkid,yyyy,dcash
from stk_dividends a
where yyyy between '2007' and '2010'
and exists (
select /*+ index(b)*/null
from stk_dividends b
where a.stkid = b.stkid
having count(b.yyyy) >= 4
)
union all
select stkid,substr(yyyyq,1,4) yyyy,greatest(sum(eps)*70/75,0) eps --保守原則
from stk_eps
where yyyyq between '20111' and '20113'
group by stkid,substr(yyyyq,1,4)
) a,stk_names b,stk_trans c,
(
select a.stkid,round(avg(roa),2) roa, round(avg(roe),2) roe,
rank() over(order by avg(roa) desc) roa_rank,
rank() over(order by avg(roe) desc) roe_rank
from (
select stkid,roa,roe
from stk_eps
where yyyy between '2007' and '2010'
union all
select stkid,sum(roa)*1.06 roa,sum(roe)*1.06 roe --用前三季保守推算全年
from stk_eps
where yyyyq between '20111' and '20113'
group by stkid
) a,stk_names b
where a.stkid = b.stkid
and b.excorp = '上市'
group by a.stkid
) d
where a.stkid = b.stkid
and a.stkid = c.stkid
and c.stkdt = '20120223'
and a.stkid = d.stkid
and c.closep > 0
group by a.stkid,b.stknm,c.closep,c.volume,b.industry,b.excorp,b.bps,roa_rank,roe_rank,roa,roe
having avg(dcash) > 0 and stddev(dcash) > 0 and avg(dcash)/c.closep >= 0.0625 and stddev(dcash)/avg(dcash) <= 0.4
)
group by stkid,stknm,roa,roe,殖利率,closep,volume,industry,dcash,excorp
order by ranks
--sum(殖利率_rank+roa_rank) ranks,
--sum(殖利率_rank+roe_rank) ranks,
sum(殖利率_rank+roa_rank+roe_rank) ranks,
closep,volume,industry
from (
select /*+ index(b) index(c)*/
a.stkid,b.stknm,b.industry,b.excorp,
rank() over(order by avg(dcash)/c.closep desc) 殖利率_rank,
roa_rank,roe_rank,roa,roe,
round(avg(dcash),3) dcash,
round(stddev(dcash),3) stdev,
round(stddev(dcash)/avg(dcash),3) variation,
round(avg(dcash)/c.closep*100,2) 殖利率,
b.bps,c.closep,c.volume
from (
select stkid,yyyy,dcash
from stk_dividends a
where yyyy between '2007' and '2010'
and exists (
select /*+ index(b)*/null
from stk_dividends b
where a.stkid = b.stkid
having count(b.yyyy) >= 4
)
union all
select stkid,substr(yyyyq,1,4) yyyy,greatest(sum(eps)*70/75,0) eps --保守原則
from stk_eps
where yyyyq between '20111' and '20113'
group by stkid,substr(yyyyq,1,4)
) a,stk_names b,stk_trans c,
(
select a.stkid,round(avg(roa),2) roa, round(avg(roe),2) roe,
rank() over(order by avg(roa) desc) roa_rank,
rank() over(order by avg(roe) desc) roe_rank
from (
select stkid,roa,roe
from stk_eps
where yyyy between '2007' and '2010'
union all
select stkid,sum(roa)*1.06 roa,sum(roe)*1.06 roe --用前三季保守推算全年
from stk_eps
where yyyyq between '20111' and '20113'
group by stkid
) a,stk_names b
where a.stkid = b.stkid
and b.excorp = '上市'
group by a.stkid
) d
where a.stkid = b.stkid
and a.stkid = c.stkid
and c.stkdt = '20120223'
and a.stkid = d.stkid
and c.closep > 0
group by a.stkid,b.stknm,c.closep,c.volume,b.industry,b.excorp,b.bps,roa_rank,roe_rank,roa,roe
having avg(dcash) > 0 and stddev(dcash) > 0 and avg(dcash)/c.closep >= 0.0625 and stddev(dcash)/avg(dcash) <= 0.4
)
group by stkid,stknm,roa,roe,殖利率,closep,volume,industry,dcash,excorp
order by ranks
訂閱:
文章 (Atom)