• Perl 中的循环结构


    while
    类似 C 语言中的 while 语句:

    while (condition) {
        #condition 为真时执行
    }
    
    • 1
    • 2
    • 3

    until 可以理解为改装过的 while 循环:

    until (condition) {
        # condition 为假时执行
    }
    # 即:
    while (!(condition)) {
        # something happens
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    因此,任意一个 until 循环都可以等价改写为 while 语句。

    for 语句类似 C 语言中的 for 控制,大致的结构如下:

    for (init-statement; condition; statement) {
        # condition 为真时执行
    }
    
    • 1
    • 2
    • 3

    for 语句实际上也可以是 while 语句的一种变体:

    # init-statement;
    
    while (condition) {
        # statement
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    for 语句中的 init-statementconditionstatement 都是可以省略的,但是分号必需保留,这和 C 语言中的语法是一致的。

    for (;;) {
        # 一直执行,直到代码块内中断
    }
    # 更常见的写法是使用 while
    while (1) {
        # 一直执行,直到代码块内中断
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    for 的另一种语法形式是:

    for (list) {
        # do something
    }
    
    • 1
    • 2
    • 3

    打印列表:

    my @words = qw/bedrock quartz mica glass/;
    
    for (@words) {
        # 逐个输出列表中的内容
        say;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    foreach 语句和 for 语句实际上是等价的(对 Perl 解析器来说是如此,这个说法出自《Perl 语言入门(第六版)》,是否真的如此我没有考证过,既然书里说是,那就是吧)

    my @words = qw/bedrock quartz mica glass/;
    
    foreach (@words) {
        say;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    上面代码同样是打印列表内容,不能说十分相似,只能说一模一样。
    如果需要自定义循环变量的名称,可以采用如下写法:

    foreach my $varname (@words) {
        say $varname;
    }
    
    • 1
    • 2
    • 3

    这里用 for 也是一样的:

    for my $varname (@words) {
        say $varname;
    }
    
    • 1
    • 2
    • 3

    foreach 甚至也能支持 (init; condition; statement) 这样的语法结构(毕竟书里说是一样的了嘛~),但是应该不会有人这么写吧不会吧。。。

  • 相关阅读:
    NLP自然语言处理简介
    查杀Linux服务器病毒进程并对Linux中的文件描述符FD进行简单探索
    【C++STL基础入门】list的运算符重载和关于list的算法
    Python常用函数中NumPy的使用教程
    WPFdatagrid结合comboBox
    4.中台领域建模
    一封来自江苏省电力设计院的表扬信
    HTML5+CSS3基础笔记(上)
    HCIP实验3-1:IBGP与EBGP
    如何正确选择UPS负载箱?
  • 原文地址:https://blog.csdn.net/wenrui7868/article/details/128080600