주간 챌린지 110

Challenge , My solutions

작업 #1 › 유효한 전화번호





텍스트 파일이 제공됩니다. 주어진 텍스트 파일에 유효한 모든 전화번호를 표시하는 스크립트를 작성하십시오.

내 솔루션



유효한 전화번호가 무엇인지부터 알아보겠습니다. +로 시작하는 전화번호만 실제로 내가 있는 곳에서 작동한다고 말할 수 있습니다. 그러나 작업에 대해서는 이것이 별로 중요하지 않다고 생각합니다.

작업 외부에서 이 작업을 수행했다면 Path::Tiny을 사용하여 파일을 읽었을 것입니다. 일반 독자들이 알겠지만, 저는 이러한 과제에서 핵심 Perl의 일부가 아닌 모듈을 사용하지 않는 것을 선호합니다.

이 작업을 위해 파일을 한 줄씩 읽고 정규식 /^(?:\+[0-9]{2}|\([0-9]{2}\)|[0-9]{4}) [0-9]{10}$/ 과 일치하는 경우 한 줄을 출력합니다. 나는 0-9digits in other languages을 포함하기 때문에 \d을 사용한다.

예시




» ./ch-1.pl input1.txt 
0044 1148820341
+44 1148820341
(44) 1148820341


작업 #2 › 파일 조옮김





텍스트 파일이 제공됩니다. 주어진 파일의 내용을 바꾸는 스크립트를 작성하십시오.

내 솔루션



이 작업에서는 형식이 CSV라고 언급하지 않았지만 예제에서는 입력이 CSV 파일임을 나타냅니다. Text::CSV을 사용하면 쉼표가 있는 값의 이스케이프를 올바르게 처리하므로 문제를 해결하지 못할 것입니다.

이 작업을 위해 입력 파일을 읽고 @lines 이라는 값으로 배열 배열을 만듭니다. 그런 다음 각 열을 반복하고 map { $_->[$col] // '' } @linesjoin 메서드를 사용하여 출력의 각 행을 표시합니다.

논리 정의 또는 //은 일부 행의 열 수가 같지 않고 출력에서 ​​undef 경고를 방지하는 경우에 사용됩니다(STDERR에도 불구하고).




» ./ch-2.pl input2.txt
name,Mohammad,Joe,Julie,Cristina
age,45,20,35,10
sex,m,m,f,f

좋은 웹페이지 즐겨찾기