先不说了,只是我的学习笔记,所以呢,在这里只是列出代码,并写下自己的心得
$input=undef;
$inputCount=1;
do
{
$_=<STDIN>;
if($_ eq "admin\n")
{
print "welcome home my lord\n";
$input="hehe";
}
else
{
print "please try again\n";
;
}
}until(defined($input));
@array=qw(1 2 3 4 5);
foreach my $bu(@array)
{
$_=<STDIN>;
if($_ eq "admin\n")
{
print "hehe the answer has got\n";
last;
}
else
{
$inputCount++;
}
}
print "you have input $inputCount\n";
不使用do while循环了,在这儿我们使用do until循环当条件成立时,设置标志,本次循环完成时会进行检测until中的标志性变量,即成功
然后呢foreach循环呢,别的不再说了,只是有一点,break好像不再适用了,但可是应该使用last语句进行跳出循环
钻石操作符
<>该操作符将会从制定的位置读取变量,当然默认的情况(不添加参数的情况下被当做是标准输入设备,即<>是<STDIN>的特例)
while(<>)
{
chomp;
print "you have input ". $_;
}
钻石操作符实际上是来自@ARGV的,该数组是来自由PERL解释器事先建立的数组其内容就是由调用参数组成的列表,只是在程序运行之前@ARGV里已经装满了调用参数。你
可以把元素shift出去(呵呵,或者做些其他的处理),钻石操作符会查看数组,笔者已经尝试过,默认情况下,当@ARGV是空的。钻石操作符就会从键盘上输入
@array=qw(1 2 3 4);
print "@array";#也就是说数组在内插输出时会自动加上空格输出
print @array;
@array=("1\n","2\n","3\n","4\n");
print @array;
print "@array";
经过查看结果我们能知道如果直接使用print @array时,它输出的是数组元素的值,中间不加任何字符,但如果@array作为的是双引号内的输出时,则会在元素之间添加上空格
进行输出,这是其一,另外如果数组元素中已经包含了换行字符的话,那么在第二行会有缩进效果,因为我们知道数组在双引号内的输出,会在元素之间天加上空格输出,既有
了缩进,在这种情况下,就不要再使用双引号内的内插输出了,直接输出即可
对于print操作符,在没有小括号的时候()只列表操作符,会将其后的内容全部输出,但是如果有了括号,那就是函数调用了,有其一定的规则
print (2+3)*4;
print ((2+3)*5);
第一个输出的是5,因为print后面有了括号,即在输出5之后返回1,然后再用1*4得到的是4,但是4在后面并没有用到,随之丢弃,
而在第二个,print ((2+3)*5),小括号中的小括号,则是限定了里面的运算,所以能够得到正确的结果