• 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) 这样的语法结构(毕竟书里说是一样的了嘛~),但是应该不会有人这么写吧不会吧。。。

  • 相关阅读:
    dockerfile文件详解(常用命令)
    VUE3 使用axios网络请求
    如何创建一个SpringBoot项目
    Spring的开幕式——Spring概述与设计思想
    【MYSQL】表的操作
    接入Websocket,自动接收CSDN短消息
    【经验贴-leetcode报错没头绪时的小妙招(非会员)】
    WebGL 计算点光源下的漫反射光颜色
    Android WebView使用总结
    LeetCode每日一题(2095. Delete the Middle Node of a Linked List)
  • 原文地址:https://blog.csdn.net/wenrui7868/article/details/128080600