2015-01-20 2 views
0

여기에 버그가 있다고 생각합니다. 나는 ':'으로 구분 된 숫자들로 구성된 문자열을 가지고있다. split()을 사용할 때 목록 항목의 수가 숫자가 아니며 "1289,2235,2300,2336"을 반환합니다. 여기 뭐가 잘못 됐니?펄 분할 함수가 무한 배열을 반환합니다.

#!/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 ; 
+3

나는 그것을 시도하고 128을 반환합니다. 나중에 코드에서 뭔가를 인쇄하는 것 같습니다. print 문 끝에서 줄 바꿈이 없으므로'print scalar @l; '의 출력에 연결됩니다. – Jens

+0

나를 위해 잘 작동합니다. 나중에 인쇄 한 내용은 4 번째 콜론 뒤에 원래 문자열에 나타납니다. – DeVadder

답변

6

코드는 나를 위해 잘 작동 - 나는 그것을 실행할 때 인쇄 128를 얻을. 나는 당신을 넘어 뜨릴 것이라고 생각하는 것은 당신이 줄 바꿈을 인쇄하지 않는다는 것이다. 예 : \n 또는 say을 사용하십시오.

그래서 전화 번호는 다음과 같습니다 코드의 비트 128를 인쇄하고 다른 코드에서이 9,2235,2300,2336를 인쇄 의미 1289,2235,2300,2336.

코드를 더 많이 추출하고 MCVE - 최소한의 완전한 검증 가능한 예제를 생성 할 수 있다면 StackOverflow의 훌륭한 사람들이 여러분을 더욱 도울 수 있습니다. I 용의자 용의자가이 작업을 수행하면 문제가 사라집니다. 펄에서는 버그가있는 반면, 꽤 성숙한 언어이므로, 여러분이 특히 애매한 것을하지 않는 한 버그는 실제로 나타나지 않습니다.