‘壹’ 看图写话小能手。 ________________________________________________________________
放学了,小明看见人行道上有一块香蕉皮,他捡起香蕉皮向垃圾箱走去,后面的一个大姐姐看见了说:“你真是个好孩子。”(合理即可) |
‘贰’ 一年级科技小能手主要事迹要怎么写
尊敬的老师,同学们,大家好!
今天我演讲的题目是:自己的事情自己做
11月份,我成为一名小学生已经三个月了,这个月份“新三好主题”是《自己的事情自己做》,经过这一个月活动的开展,我有了很大的进步,往成为一个优秀小学生又迈进了一步。
早上6点45分,到了该起床的时间了,姥姥一叫“阳阳该起床了”,我就睁开了自己的大眼睛,坐了起来,穿上自己的衣服,出去自己洗脸刷牙,然后吃饭。这些
活在以前都是姥姥妈妈帮我做的,在成为小学生后,我逐渐养成自己完成的习惯。吃完饭,该上学了,我背上了自己的小书包,跟姥姥说再见后,和姥爷去学校了。
看着路上好多小朋友都是由家长拿着书,自己背书包的我别提多骄傲了。
下午放学回来,该做作业了,我要独立完成作业了,偶而有不会的题,才会问妈妈和姥爷的。写完了作业,我还会把作业检查一遍,然后把作业本、铅笔、橡皮等学
习用品整理好了,会部整整齐齐的放在书包里后,放到固定的位置,才出去找小朋友们玩。而这些,在以前都是妈妈姥爷做的事情,我从来不干的。吃完饭了,我开
始了收拾碗筷,擦桌子,整理桌椅,我是个勤劳能干的好孩子吧。
经过了这个月的活动,我变化很大,长大了很多,我相信这些好习惯我会继续保持,在以后的学习生活中,我会越变越好,成为一个优秀的好学生的。我也感谢老师的教育和辅导,让我体会到了自己事情自己做的乐趣。
我的演讲完了,谢谢大家!
‘叁’ 学习小能手主要事迹怎么写
首先要写真实的,可以适当夸大,或者渲染自己的事迹,例如乐于助人,帮助大家进步,搞好班级工作等等。自己的奖,只要是真实的,最好都写上(学习的,德育的,体育的)一般不会查。
闪光点可以适当夸大呀,只要建立在真实的基础上即可,报纸上的很多事迹都是渲染出来的。
可以先写学习成绩,期中期末的,一直保持在班级……名。然后上升到德育,不仅仅自己优秀,还利用课余时间帮助同学一起进步啦,如果交入党申请书了什么的也要写上,突出德育要求进步。经过自己的努力,取得了什么奖项,等等。最后体育方面,成绩优秀,就ok啦。
范文:(可以修改)
自从读五年级以来,我更是以“黑发不知勤学早,白首方悔读书迟”作为座右铭,在学习中刻苦学习,从不怠慢。学习态度认真,学习目的明确。在上学期的期末考试中,还取得了语文、数学和英语第一的好成绩。在现在生活中,我也常常以此来鞭策自己,从一年级开始,每学期都被评为“三好学生”和“优秀学生干部”,成为全班同学的榜样,但是我从不骄傲,我坚信“成绩只代表过去,未来要自己争取”,所以我总是不断地努力着,我经常说:“我的未来不是梦”。
我不仅自己认真、刻苦学习,而且热心帮助他人。当我看到有困难的同学时,我总会尽自己的全力去帮助他们。在课堂上认真笔记,课后及时巩固,做到温故而知新,保证让每天所学的内容能够吸收,就像海绵里的水一样,吸得进去,挤得出来。因此,我成绩显着,各项考试总是名列前茅。
(*^__^*) 嘻嘻……选我吧……我素对对
‘肆’ 《我是学习小能手》主题班会
《我是学习小能手》主题班会
活动目的:
1、通过活动,使学生明白读书的意义,激发学生读书的兴趣,使书成为他们形影不离的好朋友。
2、通过活动,充实学生文化底蕴,净化学生的精神世界,帮助学生从小树立远大的理想。
3、借这次活动,在班级中营造良好的读书氛围,养成好读书、读好书的良好习惯。
4、懂得学习方法,注重知识的积累。
活动形式:朗诵 舞蹈 吹笛子 讲故事 语文积累展示
活动过程:
一、开幕词
甲:尊敬的老师!
乙:亲爱的同学!
合:大家好!
甲:踏着春天的脚步,我们又迎来了新的学期。
乙:春暖花开的季节,无疑是我们学习的春天。
甲:我们要听好每一节课,做好每一道习题。
乙:写好每一页字,吸收消化好每一点知识。
合:春光无限好,行动趁此时。四(1)班《爱学习 爱读书》主题班会现在开始!
二、读书伴我成长
甲:从我们懂事那天起,爸爸妈妈就会对我们说:“长大后,你要好好读书。”
乙:进入小学后,在老师的教导下,我们认识了a o e,学会了读书写字。
甲:从此一位良师益友就走入了我们的生活,那就是——书。
乙:书籍是人类进步的阶梯,书籍是我们精神的粮食。
甲:读书不但能给我们带来知识,更能给我们带来乐趣。
乙:你们都读过哪些书?从书中你知道了什么?
(学生畅谈自己读的书,和自己读书的收获。)
三、《新三字经》朗诵
甲:读书不但能给我们带来知识,也教我们做人的道理。
乙:读书也能给我们带来乐趣,让我们成为高尚的人。请听《新三字经》朗诵表演。
(10人分句朗读《新三字经》)
甲:《新三字经》是我国文化的瑰宝,教我们做人与学习。
乙:我们从《三字经》中知道了仁、义、礼、智、信。
四、讲故事《凿壁借光》、《鲁迅刻“早”》
甲:勤奋是打开知识宝库的钥匙,它为远大的理想搭建阶梯。
乙:刻苦是步入殿堂的基石,它是实现宏伟志向的前提。
甲:听古今名人励志故事。
(生讲故事)
甲:听了精彩的故事,请同学们谈谈自己的想法。
(生说自己的感想和体会)
乙:让我们以勤奋,刻苦为榜样,让自己插上理想的翅膀,飞向成功。
五:舞蹈《蓝精灵》
乙:请欣赏舞蹈《蓝精灵》。
(生表演舞蹈)
乙:真是一群快乐的小精灵。在学校里,我们也像精灵一样快乐地学习,快乐地成长。
六、语文积累展示会
甲:我们在校园里茁壮成长,离不开老师点点滴滴的辛勤教育。
乙:是啊,老师不但关心我们的生活,更关心我们的学习。
甲:一年级时,老师教我们快乐识字。
乙:二年级时,老师教我们背诵古诗。
甲:三年级时,老师教我们积累成语。
乙:四年级时,老师教我们积累歇后语。
甲:请看语文积累展示会,请各个小队准备!
(成语队队长:大家好,我是成语队的队长。别看我们成语只有四个字,它可是我们民族语言的精华,每一个成语都有一个小故事,还告诉我们词语的含义,教我们做人与处世。等一下我们给大家展示。)
(古诗队队长:你们好,我是古诗队的队长,古诗是中国文化中的一颗璀璨的明珠,它语言优美,生动,有描写景物的诗句,有描写人间真情的,也有表达爱国和理想的。我们从小就开始背诵古诗了,那我们也会给大家露一手。)
(歇后语队队长:还有我呢,我是歇后语队的队长,歇后语可有意思了,他由前半句和后半句组成,一般有两种形式,一是表示意义的,一是表示谐音的。歇后语用幽默的语言告诉我们一定的道理和生活中的事情。)
(谚语队的队长:你们都说得很好,我也给大家介绍一下,谚语是劳动人民在日常生活中积累经验总结的语言,它有表示气候的,有表示哲理的,还有表示农耕的,也教我们为人和做事。我们给大家表演表演!)
(全班学生按小组进行语文积累的展示)
甲:看来,同学们积累了不少的语文知识,掌握了学习方法。
七、全班齐奏《南泥湾》
甲:俗话说:“拳不离手,曲不离口。”学任何本领、知识都要专心和努力。
乙:正所谓,“只要功夫深,铁杵磨成针。”我们同学们不但会学习,还学会了吹笛子呢!
合:全班齐奏《南泥湾》
八、班主任总结
甲:我们班的笛子吹得不错吧!
乙:那当然啦!他们精神饱满笛声悠扬.。
甲:这些都离不开老师的辛勤指导。下面请我们亲爱的班主任讲话。
(班主任总结:亲爱的同学们,看了大家的表演,老师真为你们高兴,你们个个口吐玉玑、神采飞扬。俗话说:一分耕耘,一分收获,天道酬勤,相信,通过此次主题班会,你们一定学到了知识,享受到了勤奋学习的快乐,老师希望你们以后能外甥大灯笼——照旧努力,照旧积累,成为“腹有诗书气自华”的人。)
甲:同学们,我们要牢记老师的淳淳教诲,今天的班会是我们刻苦学习的新起点。
合:勤奋学习,认真读书,用自己的实际行动回报老师,回报社会。四<1>班爱学习爱读书主题班会到此结束。谢谢大家!
活动反思:在教师做总结时,对学生表演的肯定并提出希望,我用了成语、谚语、歇后语、诗句来结尾。通过开展《爱读书 爱学习》主题班会,提高学生的学习意识,并对学习产生浓厚的兴趣。培养学生的语言表达能力和表演能力,多给学生展示的机会,多给学生锻炼的机会。四年级的学生,也正是抓学习的大好时机,如何让孩子养成良好的学习习惯,体会读书的乐趣,从而爱学习,学会学习,使他们的意识上一个新的台阶。班会的各个节目,都是学生平时积累的,如语文知识积累,这是我从一年级开始就做好了准备,吹笛子表演是我们班的特长,从这些表演中,学生深深地明白了,无论学什么都要勤奋、专心,才能学好。
‘伍’ 求个28号上午有空的C++编程小能手 大家懂的 有报酬 可面议 有诚信有意向的百度hi我
你想让+具有什么含义啊,通过operator...关键字实现
给你几个例子:
1,:#include "iostream"
using namespace std;
class Complex
{
private:
double real,image;
public:
Complex(int r,int i):real(r),image(i)
Complex( ):real(0),image(0)
void show( )
{
cout<<"The complex is: "<<real<<" i"<<image<<endl;
}
friend Complex operator+ (Complex& c1, Complex& c2)
{
Complex c3;
c3.real = c1.real + c2.real;
c3.image = c1.image + c2.image;
return c3;
}
friend Complex operator- (Complex& c1, Complex& c2)
{
Complex c3;
c3.real = c1.real - c2.real;
c3.image = c1.image - c2.image;
return c3;
}
};
int main( )
{
Complex c1(1,2),c2(3,4),c3,c4;
c3 = c1 + c2;
c4 = c1 - c2;
c3.show( );
c4.show( );
return 0;
}
/*
class Complex
{
private:
double real,image;
public:
Complex(int r,int i):real(r),image(i)
Complex( ):real(0),image(0)
void show( )
{
cout<<"The complex is: "<<real<<" i"<<image<<endl;
}
Complex operator+ (Complex& c2)
{
real = real + c2.real;
image = image + c2.image;
return *this;
}
Complex operator- (Complex& c2)
{
real = real - c2.real;
image = image - c2.image;
return *this;
}
};
*/
/*
Complex operator- ()
{
Complex c;
c.real = -real;
c.image = -image;
return c;
}
friend Complex operator- (Complex& c1)
{
Complex c2;
c2.real = -c1.real;
c2.image = -c1.image;
return c2;
}
*/
2:
#include "iostream"
using namespace std;
class Complex
{
private:
double real,image;
public:
Complex(int r,int i):real(r),image(i)
Complex( ):real(0),image(0)
void show( )
{
cout<<"The complex is: "<<real<<" i"<<image<<endl;
}
Complex operator-()
{
this->image = -this->image;
return *this;
}
};
int main( )
{
Complex c1(1,2),c2(3,4),c3,c4(6,9);
c4.show();
c4 = c4.operator-();
//c4 = operator-(c4);
c4.show();
return 0;
}
3:
//#include"stdafx.h"
#include "iostream"
using namespace std;
class Num
{
private:
int data;
public:
Num(int d):data(d)
Num():data(0)
void show()
{
cout<<"The data is: "<<data<<endl;
}
friend Num operator+(Num& n1,Num& n2);
friend Num operator-(Num& n1,Num& n2);
};
Num operator+(Num& n1,Num& n2)
{
Num n3;
n3.data = n1.data - n2.data;
return n3;
}
Num operator-(Num& n1,Num& n2)
{
Num n3;
n3.data = n1.data + n2.data;
return n3;
}
int main()
{
Num a(1),b(1),c,d;
c = a - a;
c.show();
d = b + b;
d.show();
return 0;
}
相信可以解决你的问题。
‘陆’ 我是科技小能手作文100 字
我叫xxx ,是x 学校,x 年级x 班 的一名学生,我的业余爱好是进行一些科技小创作,我现有的科技创作作品有制作飞机模型,我的飞机模型可有意思了,飞机主体是用铝合金涂上银灰色水银做成的,飞机两翼是用铝合金涂上蓝色加黄色水银做成的,飞机的头是尖尖的,而飞机的尾巴是椭圆形的, 我参加了全国国科技小能手大赛,获得2等奖,我爱我的学校,更爱我的科技创作。
‘柒’ 我是科技小能手主题班会
...呃、、、、
我回答来试试
次主题大概意在通过让孩子们动手动脑来激发他们的创造力和动手能力,并让他们通过适当的竞争对科技和学习产生兴趣。那么, 你的班会内容需要紧扣这一主题
你瞧, 你需要对班会的内容做出一些规划,否则他们不会对此产生兴趣的
以下:
1、这个是对校方领导 听课老师,和一部分同学说的,在班会正式开始之前,先报出班会主旨,班会安排、目的意义和这是第几次班会。
2、提问——在班会进程中,你需要保证学生们有足够的兴趣来帮助你将此次班会愉快的进行下去,那么,在班会正式开始之前留下一些问题让他们思考就显得十分必要了,所以,在开始之前,你要留下一些悬念或是问题给他们想,让他们对这次班会产生足够的兴趣
3、正式开始:
你可以通过多种方式来达成班会主旨,不过个人认为其重点还是在于让学生展示自我。
整个班会环节你应通过提问来达成,科技知识提问 顺便科普,安排学生进行小制作并在班会当天展出,然后学生评价。当然,作为主持人对于环节时间 环节重心的把握也十分重要。
4、结束语
如题,只是结束语而已,你需要对本次班会做出总结。
‘捌’ 制作小能手
这是我在 千水星官网 上看到的,还有很多教程,也有很多配件材料。可以去看看 ,嘻嘻。我要做东西,都是在上面找的,很方便的
DIY刷刷车科技小制作完成效果。
‘玖’ 怎样具备工匠精神的技能小能手从何做起
举个例子,宋徽宗的瘦金体和他的木匠技能都是连当时最好的木匠都感叹。虽然皇帝不咋样,但技术和丹青,书画都是独步天下。这就是工匠精神。
‘拾’ 关于编程学习的方面,请达人帮忙。万分感谢
◎字串运算子
String Operator Purpose
x Returns a string consisting of the string on the left of the operand, repeated the number of times of the right operand.
. Concatenates the two strings on both sides of the operator.
eq Returns True if the two operands are equivalent, False otherwise.
ne Returns True if the two operands are not equal, False otherwise.
le Returns True if the operand on the left is stringwise less than the operand on the right of the operator. Returns False otherwise.
lt Returns True if the operand on the left is stringwise less than or equal to the operand on the right of the operator. Returns False otherwise.
ge Returns True if the operand on the left is stringwise greater than or equal to the operand on the right of the operator. Returns False otherwise.
gt Returns True if the operand on the left is stringwise greater than the operand on the right of the operator. Returns False otherwise.
cmp Returns -1, 0, or 1 if the left operand is stringwise less than, equal to, or greater than the right operand.
, Evaluates the left operand, the evaluates the right operand. It returns the result of the right operand.
++ Increments the string by one alphabetic value.
◎数值运算子
Value Operator Purpose
+ Computes the additive value of the two operands.
- Computes the difference between the two operands.
* Computes the multiplication of the two operands.
/ Computes the division between the two operands.
% Computes the molus(remainder) of the two operands.
= = Returns Ture if the two operands are equivalent, False otherwise.
!= Returns Ture if the two operands are not equal, False otherwise.
<= Returns Ture if the operand on the left is numerically less than or equal to the operand on the right of the operator. Returns False otherwise.
=> Returns Ture if the operand on the left is numerically greater than or equal to the operand on the right of the operator. Returns False otherwise.
< Returns Ture if the operand on the left is numerically less than the operand on the right of the operator. Returns False otherwise.
> Returns Ture if the operand on the left is numerically greater than the operand on the right of the operator. Returns False otherwise.
< = > Returns -1 if the left operand is less than the right, +1 if is it greater than, and 0(False) otherwise.
&& Performs a logical AND operation. If the left operand is True m then the right operator is not evaluated.
|| Performs a logical OR operation. If the left operand is True m then the right operator is not evaluated.
& Returns the valueof the two operators bitwise ANDed.
| Returns the valueof the two operators bitwise ORed.
^ Returns the valueof the two operators bitwise XORed.
++ Increment operator. Increments the variable's value by 1.
-- Decrement operator. Decrements the variable's value by 1.
** Computes the power of the left-hand value to the power of the rihght-hand value.
+= Adds the value of the right-hand operand to the value of the left-hand operand.
-+ Subtracts the value of the right-hand operand to the value of the left-hand operand.
*= Mlutiplies the value of the left-hand operand to the value of the right-hand operand.
>> Shifts the left operand right by the number of bits that is specified by the right operand.
<< Shifts the left operand left by the number of bits that is specified by the right operand.
~ Performs a 1s complement of the operator. This is a unary operator.
(b) Scalar Array:
纯量阵列,阵列内的每一个元素都是Scalar variable。宣告及使用方式如下:
# 纯量阵列以 @ 开头。
my @array;
my @array=qw(a b c d);
# qw 函数会将其后的每个元素用逗点隔开,效果就像下面这行。
my @array=("a","b","c","d");
# 当然你也可以一个个元素宣告,下面就是存取每一个元素的方法。
# 因为阵列中的每一个元素都是纯量变数,所以要以 $ 开头,
# 刚开始容易搞混,请注意。
$array[0]="a"; $array[1]="b"; $array[2]="c"; $array[3]="d";
# 使用for loop印出阵列内每个元素的值。
for($i=0; $i<=$#array; $i++) {
print "$array[$i]\n";
}
看到$#array这个奇怪的东东没? 这是Perl的一个特殊用法,代表这个阵列最后一个元素的注标。由于Perl不必事先宣告变数,也不必预先宣告阵列的大小,甚至可以随时增加新元素,那我们怎么知道这个阵列到底有多大呢? 透过这个特殊变数我们可以得知这个这个阵列最后一个元素的注标,自然而然也就知道这个阵列究竟有多大了。另外Perl只定义了一维阵列的语法,二维以上只能用指标间接来达成。
(c) Hash Array(Associative Array):
杂凑阵列也叫做相关阵列,它和一般阵列没什么不同,差别只是在它的索引值用的是字串,而非一般阵列所用的整数值,因此相关阵列不像一般阵列一样有次序的概念,它没有所谓的第一项资料这种说法。它就相当于把一堆变数组合成一个group,然后我们可以透过索引字串存取这个group每一个元素的值。相关阵列的宣告及使用方式如下:
# 相关阵列是以 % 符号开头的。
my %hash;
# => 这个符号是Perl5新增的,是为了相关阵列量身定做的,
# 因为索引和元素值都是纯量,若使用 => 这个符号,
# (索引=>元素值) 两两对应,就不容易发生失误。
my %hash=("i1"=>"aaa","i2"=>"bbb","i3"=>"ccc");
# 上面这行的效果和下面这行是一样的。
my %hash=("i1","aaa","i2","bbb","i3","ccc");
# 下面是存取每个元素的方法,注意是用大括号把索引括起来哦。
# 习惯上索引值用单引号、元素值用双引号括起来。
$hash{'i1'}="aaa"; $hash{'i2'}="bbb"; $hash{'i3'}="ccc";
# 下面是使用相关阵列的三个例子:
foreach $key (keys %hash) {
print "$hash{$key}\n";
}
foreach $value (values %hash)
while(($key,$value)=each %hash)
Perl有上述三个函数可对相关阵列做运算:keys函数可取出相关变数的索引值,组成一纯量阵列,注意这些由keys函数取出的索引值没有次序性;values函数可取出相关变数的元素值;each函数则会取出(索引、元素)对。使用者可视情况而用。
(d) References(Pointer):
Perl 5新增了参考指标的资料型态,使Perl和C一样可借由指标建立一些复杂的资料结构。普通程式是用不到指标这玩意的,下面也只是简单介绍一下,看不懂的人可不必深究。
⊙如何取得变数的位址?
$scalarRef=\$scalarVar;
$arrayRef=\@arrayVar;
$hashRef=\%hashVar;
$funcRef=\&funcName;
⊙如何使用指标?
print $$scalarRef;
print "@$arrayRef";
print $hashRef->{$key};
&$funcRef;
⊙Anonymous Array References:(二维阵列)
$arrayRef=[[1,2,3,4],a,b,[x,y,z],c];
print "$arrayRef->[0][0]\t$arrayRef->[2]\t$arrayRef->[3][2]\n";
⊙Anonymous Hash References:
$hashRef={a=>aa,b=>bb,c=>cc};
print "$hashRef->{a}\t$hashRef->{b}\t$hashRef->{c}\n";
(2) 控制叙述(Control Statements)
(a) Conditional Control Statements:
Perl的条件控制叙述和C语言很像,让使用者很快就能掌握它。不过Perl比C语言又另外多了些实用的语法,我用底线标出来,大家一看便知:
# Expression 就是条件叙述式,Perl和C一样没有定义布林资料型态(Boolean data type),
# 因此 0 是false、非0 是ture。另外要注意字串运算子和数值运算子要分清楚哦。
# Code Segment 就是用大括号括起来的一堆指令,也就是一个Block。
if (Expression) {Code Segment}
if (Expression) {Code Segment} else {Code Segment}
if (Expression) {Code Segment} elsif (Expression) {Code Segment} else {Code Segment}
# elsif 就是 else if
# 如果指令(statement)只有一项,我们可以使用倒装句法,看起来比较简洁。
statement if (Expression);
# unless 就是if not
statement unless (Expression);
例:
print "HELLO!\n" if ($name eq "friend");
$x-=10 if ($x == 100);
看吧! C 语言有的Perl大部分都有,学过 C 的人可以毫不费力的学会Perl。
(b) Loop Control Statements:
Perl的回圈控制叙述也和C语言很像,当然,照例Perl也另外多了些实用的语法:
# 注意:纯量变数前面要加个 $ 字号,这一点和C语言不一样哦。
for($i=0; $i<=10; $i++) {Code Segment}
# foreach 是承袭UNIX的shell script来的,
# 第一个引数是纯量变数,第二个引数要用括号括起来,里面是一个纯量阵列,
# 顾名思义它就是把阵列中的每个元素依序传给第一个引数,直到全部传完。
# 它和 for($i=0; $i<=$#array; $i++) 用法虽然不同,但目的都是要取出阵列的每个元素。
foreach $i (@array) {Code Segment}
# 其实在Perl中,for和foreach是可以混着用的,就看个的人习惯了。
# 下面这行就等于上面第一个叙述,不过简洁多了,大家可以试着用用看。
for $i (0..10) {Code Segment}
# while控制回圈和后置回圈。
while($i<=10) {Code Segment}
do {Code Segment} while(Expression);
# Perl也有和C语言的break和continue一样的指令,Perl叫它做 last 和 next (较口语化)。
# last是跳出现在所在的回圈,next则是跳过下面的指令直接执行下一次的回圈。
while(chomp($i=<STDIN>)) {
next if ($i == 5);
last unless ($i > 10);
}
Perl还有提供label(标记)的语法,也就是 goto 指令,不过有经验的programer并不喜欢用它,我也不建议大家使用,所以就此按下不讲。有兴趣的人请自行查阅。还有一点值得注意的是Perl没有提供像C语言一样的 switch 叙述,不过Perl的pattern match的功能非常强,所以我建议你直接用 if else 叙述来做就好了。
(3) 副程式(Subroutines)
(a) Syntax: sub NAME {Code}
(b) 呼叫副程式: &NAME(para1, para2,...)
(c) 参数传递: @_
Perl和C一样是采用Call by value的方式,不过因为Perl不用事先宣告变数,所以建立副程式的时候也不用宣告要传递什么参数。当主程式在传递参数给副程式时,Perl会把括号括起来的参数按顺序放在一个特殊的全域变数 @_ 阵列中,然后副程式就可以随意使用阵列 @_ 里的参数,例如 $_[0] 是第一个参数, $_[1] 是第二个,或是用 my ($a1,$a2,$a3,...) = @_;来取出各个参数,当然 my @arg=@_; 或 my %arg=@_; 也是可以的。由于Perl的语法非常活泼,使得程式在维护时特别棘手,因此写注解成为一项很重要的工作。我建议你最好在每个副程式前面加上对这段副程式的描述,特别是需要传递的参数要注明清楚。
(d) Variable Localization:my or local
通常我们在程式中定义的变数都是全域变数,所以在副程式中若要把变数区域化则要加上 my 或 local 关键字,例如: my $x=3;,若副程式所用的变数名不小心和主程相同,Perl会以目前正在执行的副程式里的变数为优先。
(4) I/O和档案处理
(a) Syntax:
open(FILEHANDLE,"Expression");
close(FILEHANDLE);
这里的Expression是一个叙述加上档案名称,若Expression只有档案名称没有加上叙述,则预设是唯读。Expressions叙述如下:
Expression Effect
open(FH, "<filename") Opens filename for reading.
open(FH, "+<filename") Opens filename for both reading and writing.
open(FH, ">filename") Opens filename for writing.
open(FH, "+>filename") Opens filename for both reading and writing.
open(FH, ">>filename") Appends to filename.
open(FH, "command|") Runs the command and pipes its output to the filehandle.
open(FH, "command|") Pipes the output along the filehandle to the command.
open(FH, "-") Opens STDIN.
open(FH, ">-") Opens STDOUT.
open(FH, "<&=N") Where N is a number, this performs the equivalent of C's fdopen for reading.
open(FH, ">&=N") Where N is a number, this performs the equivalent of C's fdopen for writing.
例:
# 开启$filename这个档案,若开启失败则印出die后面的讯息,并结束程式。
open(FILE, $filename) || die "Can't open file $filename : $!\n";
# 下面是一个十分精简的写法,和 while($_=<FILE>){print "$_";} 是等效的。
print while(<FILE>);
# 档案开启后要记得随手关闭,这才是写程式的好习惯。
close(FILE);
# $!和$_都是Perl的特殊变数,下面会介绍的。
(b) Input:
Perl没有特别用来输入的函数,因为Perl在执行程式时,会自动开启标准输入装置,其filehandle定为STDIN,所以在Perl中要输入资料的方法就是使用<STDIN>:
# Perl不会自动去掉结尾的CR/LF,跟C语言不同,所以要用chomp函数帮你去掉它。
# 大家常常会忘记这个动作,导致结果跟你想的不一样,要特别注意一下。
$input=<STDIN>; chomp $input;
# 下面是较简洁的写法。
chomp($input=<STDIN>);
(c) Output: print "variables or 字串";
Perl也有printf()函数,语法和C语言一模一样,我就不多做介绍了。Perl另外有个print函数,比printf()更方便、更好用,包你爱不释手。 Output不外乎是输出到萤幕或档案,用例子来说明比较容易了解。
# 不用再指定变数的data type,这样不是比printf()方便多了吗?
print "Scalar value is $x\n";
# . 是字串加法的运算子,上下这两行是等效的。
print "Scalar value is " . $x . "\n";
# 输出到档案的方法。
print FILE "print $x to a file.";
# 下面是print的特殊用法,学自shell script的用法:
print<<XXX;
这招叫做 here document,XXX可以是你取的任何识别字,
在识别字之间的字都会按照你所写的样子输出,就像<pre>标签一样。
而当一行的开头是XXX你取的这个识别字时,才会停止输出。
XXX
Perl 也有和 C 一样以 "\" 开头的特殊字符:
\t tab
\n newline
\r return
\f form feed
\b backspace
\a alarm(bell)
\e escape
\033 octalchar
\x1b hex char
\c[ control char
\l lowercase next char
\u uppercase next char
\L lowercase till \E
\U uppercase till \E
\E end case modification
\Q quoteregexp metacharacters till \E
另外需要说明的是 Perl 融合了 unix shell script 的使用惯例,以双引号("")括起来的字串会先经过展开,但反斜线(\)后面的字符则不展开,当作一般字符看待。而以单引号('')括起来的字串完全不会展开,以反单引号(``)括起来的字串会把它当作命令列指令一样执行,等于system()一样。初学者常常会搞混,但习惯之后就会觉得不这样分清楚反而不行哩。举个例吧:
$x="ls -l";
print "$x"; # Output ls -l
print "\$x"; # Output $x
print '$x'; # Output $x
print `$x`; # Output files in this directory
(5) Regular Expressions
Regular Expression通常是用来寻找特定的字串样式(pattern),也就是所谓格式辨认(pattern-matching)的功能。它的运算子是‘=~’和‘!~’,可以把它念做match和not match。
Syntax: $string =~ /regular expression/expression modifier
例:$sentence =~ /Hello/