본문 바로가기
반응형

Perl-공부하기13

정규표현식 perl 을 배우고 쓰는 여러가지 이유가 있겠지만, 그 중에서 가장 큰 (그리고 매력적인) 포인트는 정규표현식이다. 원래 정규 표현식은 perl 만의 것은 아니지만, perl 에서 완성이 됬다고 해도 과언이 아닐 정도면, 이후에 나온 대부분의 언어에서도 perl-style 정규표현식을 따로 지원할 정도로 정규표현식의 standard 의 위치에 있다. perl 에서 기본적인 정규표현식의 matching 은 다음과 같이 이루어진다. my $s = "this is line of text" if ( $s =~ /line/ ){ say "true" } 매칭 연산자는 =~ 이며 이후 나오는 문자열과 매칭이 되면 참 / 매칭이 되지 않으면 거짓을 반환한다. 하지만 그 보다 더 자주 사용되는 것은 와일드카드 ( ? ,.. 2022. 3. 3.
[perl] xargs 를 활용한 파일 이름 변경 예제 xargs 는 표준 입력을 다음 명령어의 arguments 로 변환시켜주는 unix 명령어이다. 예를들어 파일을 지우는 rm 명령어의 경우 rm (filename) 이런식으로 사용하는데, 이 경우 뒤에 (filename) 이 부분이 명령 인자(argument)에 해당된다. 물론 wildcard 등을 이용해서 한 번에 많은 파일을 지우거나, 폴더 전체의 파일을 지울 수 도 있다. rm * 하지만 만약 특정 pattern 만 취해서 파일을 삭제 하고 싶다면? 예를들어 중간에 (_old_) 라는 단어가 들어간 파일만 지우고 싶다면 아래처럼 ls | grep "_old_" | xargs rm 여러개의 명령어를 조합하여 실행시킬 수 있다. 이 경우 grep 에서 정규표현식을 사용할 수 있다는 점에서 그리고 xar.. 2021. 8. 9.
Perl Tutorial - 4. Count Lines 3 앞의 예제를 좀 더 깔끔하게 모듈화 시켜본다. #!/usr/bin/perl use 5.18.0; use warnings; use IO::File; main(@ARGV); sub main { my $filename = shift || "file.txt"; my $count = countlines( $filename ); say "there are $count lines in $filename"; } sub countlines { my $filename = shift; error("missing file") unless $filename; my $fh = IO::File->new( $filename , "r") or error("Cannot open $filename ($!)\n"); my $count = .. 2020. 12. 31.
Perl tutorial - 3. Count lines 2 전의 튜토리얼을 통해서 파일을 읽고, 행의 갯수를 새 보았는데 겨우 행의 갯수를 세기 위해서 모든 text 파일을 읽어서 저장하는 것은 사실 비효율적인 일이다. 즉 파일의 contents 는 필요없고 단순히 몇 line 으로 이루어져 있는 지를 확인하는 보다 직관적인 튜토리얼은 다음과 같다. #!/usr/bin/perl use 5.18.0; use warnings; use IO::File; ##library for io control my $filename = "file.txt"; #declear var my $fh = IO::File->new($filename, "r"); if( ! $fh ){ print("Cannot open $filename ($!)\n"); exit } my $count = 0;.. 2020. 12. 31.
반응형