perl 中的 foreach 語句

2021-09-25 09:33:34 字數 1148 閱讀 6132

最近在用 perl 來編寫【**生成器】的過程中多次遇到對 foreach 語句使用不當的問題。對於這個問題,我在第一次遇到時覺得自己在寫**時沒有想太明白,再次遇到同乙個問題,我覺得很有必要在這裡記錄一下,既為了加深對此問題的印象,也能夠給其他 perl 的初學者提供參考。

我這裡提及的【**生成器】其實非常簡單。它通過讀入預定格式的輸入,然後解析輸入資料,生成各種引數資訊,將這些引數資訊傳遞到子過程中用來生成需要的**字串,然後將**寫入到檔案中。在這一過程中主要使用了字串的切割、轉換、追加等操作,沒有太大的難度,卻需要處理許多細節問題。

在編寫**生成器的過程中,我經常需要使用 foreach 來遍歷陣列的每一項,從每一項中提取資訊,製作引數傳遞給子函式來生成**。下面是乙個 foreach錯誤使用方式的示例。

#!/usr/bin/perl

use strict;my(

@table)=

("name"

,"number"

,"id");

sub generate_table

foreach

(@table

)

在上面的**中,使用 foreach 遍歷 table 陣列看上去沒有什麼問題,可在 foreach 的 block 中我引用陣列每一元素的語句是 $table[$_]。這裡的引用是不正確的。$_ 在這裡表示的就是每乙個元素的值。這裡沒有報錯,執行時輸出結果的第一項是正常的,後兩項卻不正常。如果有很多輸出,不仔細去觀察可能不能立刻發現這個問題!

查閱資料發現在 perl 中使用 foreach 遍歷陣列主要有以下兩種形式。

直接遍歷陣列元素

foreach

(@table

)

使用下標遍歷陣列元素

foreach(0

..$#table

)

對比這兩種方式,你會發現我上面的**中是將這兩種方式混用了,這說明了我對 foreach 的使用還很不熟悉。

學習一門語言最快的方法就是使用這門語言去編寫實際的**。在解決實際問題中,根據需要掌握必要的語法。在這一過程中可能會遇到很多因為對語法不熟悉而產生的問題,遇到這樣的問題時最好停下來總結下,將使用的方法與環境研究清楚,這樣對語言的掌握力也能夠更進一步提公升。

Mybatis中的foreach語句簡介

mybatis中的foreach語句適用於多種業務場景,主要起的作用是迭代集合。在實際應用場景中,使用乙個正確的foreach能夠提高執行效率,所以通過記錄最近一次使用foreach的具體場景來了解foreach的具體實現。通過業務層傳入乙個list集合,其中存放了一批id號,list list 隨...

PHP中foreach迴圈語句

一 語法 foreach array expression as value statement foreach array expression as key value statement foreach語句將遍歷陣列 array expression,每次迴圈時,將當前陣列中的值賦值給 val...

perl的foreach賦值是引用

這個程式將會把 a陣列中所有的元素先逐個引用給 counter,然後把 counter地值列印出來。注意,我這裡說得是引用,不是賦值,perl裡面的 實際上是在進行引用,而不是賦值,這是需要同c嚴格區分的。下面的例子好玩,看一看 user bin perl w use strict print a ...