perlsplit函数返回无限数组



我认为这里有一个错误。我有一个字符串,由用":"分隔的数字组成。当我使用split((时,列表项的数量不是数字,它返回"1289223523002336"。这里怎么了?

#!/opt/local/bin/perl
$data="10:2284:2345:2381:9:2235:2300:2336:8:2212:2273:2320:7:2194:2262:2295:6:2165:2232:2269:5:2118:2167:2205:4:2086:2142:2161:3:2039:2106:2138:2:2034:2088:2127:1:2028:2079:2109:01:1999:2046:2080:02:1972:2016:2052:03:1960:1987:2019:04:1915:1945:1971:05:1870:1888:1911:06:1798:1828:1855:07:1764:1789:1809:08:1692:1728:1753:09:1665:1688:1706:010:1636:1657:1679:011:1575:1607:1641:012:1549:1582:1620:013:1485:1539:1582:014:1395:1485:1540:015:1382:1456:1504:016:1368:1422:1465:017:1301:1360:1405:018:1267:1252:1283:019:1213:1252:1283:020::1159:1180:021::1112:1143:022::1087:1094::";
@l = split(':',$data);
print scalar @l ;

您的代码对我来说运行良好-运行时会打印128。我认为会让你绊倒的是你没有打印换行符。例如n或使用say

所以你的数字是:1289,2235,2300,2336,这意味着代码的这个位正在打印128,而代码的其他部分正在打印9,2235,2300,2336

如果你能提取更多的代码,并生成一个MCVE——最小的完全可验证的例子——StackOverflow的优秀人员可以进一步帮助你。我怀疑当你这样做的时候,你的问题就会消失——虽然perl中有bug,但它是一种相当成熟的语言,所以除非你在做一些特别晦涩的事情,否则这些bug真的不会出现。

最新更新