Perl 튜토리얼: 프로그래밍 예제를 사용한 변수, 배열, 해시

펄이란?

는 고급, 범용, 해석형, 동적 프로그래밍 언어입니다. Perl은 "Practical Extraction and Reporting Language"의 약자이지만 Perl에 대한 약어는 없습니다. 1987년 Larry Wall이 소개했습니다. Perl 언어는 텍스트 편집을 위해 특별히 설계되었습니다. 하지만 지금은 Linux 시스템 관리, 네트워크 프로그래밍, 웹 개발 등 다양한 용도로 널리 사용됩니다.

프로그래밍 언어 개요

간단하게 정리해보자. 컴퓨터는 0과 1(이진 언어/기계 언어/[저수준 언어])만 이해하지만 인간이 이진 언어로 프로그래밍하는 것은 매우 어렵습니다. Perl은 자연어 요소, 즉 일반 영어에서 사용되는 단어를 사용하여 인간이 이해하기 쉬운 프로그래밍 언어입니다.고급 언어]. 이제 문제가 생겼습니다. 컴퓨터는 우리 인간이 쉽게 이해할 수 있는 고급 언어를 이해할 수 없습니다. 그러기 위해서는 고급언어를 저급언어로 번역할 수 있는 것이 필요합니다. 여기서 통역사가 우리를 도와줍니다. 인터프리터는 고급 언어로 작성된 프로그램을 컴퓨터가 이해하고 프로그램에 작성된 명령을 실행할 수 있도록 저급 언어로 변환하는 소프트웨어입니다. 그러므로 Perl은 해석된 프로그래밍 언어.

Perl은 어디에 사용되나요?

Perl 스크립팅 언어의 힘은 많은 분야에서 구현될 수 있습니다. Perl의 가장 인기 있는 용도는 웹 개발입니다. Perl은 또한 웹 서버에서 많은 작업을 자동화하고 다른 관리 작업을 자동화하는 데 사용되며, 자동으로 이메일을 생성하고 시스템을 정리할 수 있습니다. Perl은 여전히 ​​원래 목적인 데이터 추출 및 보고서 생성에 사용됩니다. 리소스 사용에 대한 보고서를 생성하고 네트워크의 보안 문제를 확인할 수 있습니다. 이러한 이유로 Perl은 웹 개발, 네트워킹 및 생물정보학에도 사용되는 인기 있는 언어가 되었습니다. 이 모든 것 외에도 Perl은 CGI 프로그래밍에도 사용할 수 있습니다.

Perl은 이미지 생성 및 조작에도 사용할 수 있습니다. 텔넷, FTP 등을 통한 네트워킹 외에도 그래픽 사용자 인터페이스 생성, VLSI 전자 장치 및 스팸 관행을 줄이기 위한 메일 필터 생성은 Perl의 몇 가지 사용 사례입니다.

Perl은 또한 OOP(객체 지향 프로그래밍) 관행을 구현한 것으로 알려져 있으며 모든 형태의 상속(단순, 다중 및 다이아몬드), 다형성 및 캡슐화를 지원합니다. Perl은 절차적 관행과 OOP 관행을 동시에 지원할 만큼 유연합니다. Perl에는 또한 다음 언어로 작성된 코드를 작성하거나 사용/재사용할 수 있는 추가 모듈이 있습니다. Python, PHP, PDL, TCL, 옥타브, Java, 씨, C++, Basic, Ruby 및 Lua를 Perl 스크립트에 포함합니다. 이는 Perl을 이러한 추가 기능과 결합할 수 있음을 의미합니다. 프로그래밍 언어 오히려 기존 코드를 다시 작성합니다.

Perl 프로그래밍 언어의 응용

Perl 프로그래밍 언어의 응용

왜 펄을 사용하는가?

위에 언급된 모든 작업을 수행하는 데 사용할 수 있는 다른 프로그래밍 언어가 있다는 것은 사실입니다. 그렇다면 특별히 Perl을 사용해야 하는 이유는 무엇입니까? Perl은 배우기가 매우 쉽습니다., 특히 컴퓨터 프로그래밍에 대한 배경 지식이 있는 경우 더욱 그렇습니다. Perl은 컴퓨터로 처리하기 쉽게 만드는 것이 아니라 사람이 쉽게 작성하고 이해하기 쉽도록 설계되었습니다. 정규식을 사용합니다. 자연스러운 언어 스타일은 특정 문법과 구문을 사용하는 다른 프로그래밍 언어와 다릅니다. 그러므로 Perl은 매우 유연하며 해결책이나 문제를 생각하는 특별한 방식을 사용자에게 강요하지 않습니다. Perl은 이식성이 매우 뛰어납니다. Perl 인터프리터가 설치된 모든 운영 체제에서 실행될 수 있으므로 플랫폼 독립적입니다. 모든 Linux Operating 시스템에는 Perl이 설치되어 있으므로 Linux에서 바로 Perl 코딩을 시작할 수 있습니다. 이는 코드가 사용되는 Linux 배포판의 플레이버에 따라 변경되어 점점 이식성이 떨어지는 Shell 스크립트와는 다릅니다. Perl의 작은 특정 작업은 매우 쉽고 빠릅니다.. 초보자를 위한 이 Perl 튜토리얼을 통해 특정 작업을 위한 작고 빠른 프로그램을 코딩하는 방법을 배우게 됩니다. UNIX를 루트로 하는 프로그래밍 언어를 배우기 시작하는 데 사용되는 고전적인 Hello World 프로그램의 간단한 예를 들어보겠습니다.

예: Perl hello world

Perl의 간단한 예

#!/usr/bin/perl
print "Hello, world!";

출력:

안녕, 세상!

위의 두 줄의 코드는 Hello, world!를 인쇄합니다. 이제 너무 간단하고 빠르지 않았나요? C에 대한 지식이 있는 학생 C++ 해당 언어에서 동일한 출력을 얻으려면 더 많은 코드 줄이 필요하다는 것을 알게 될 것입니다.

이유가 궁금 할 수도 있습니다. Perl은 웹에서 매우 유명합니다.. 웹에서 일어나는 대부분의 일은 TEXT이고 Perl은 텍스트 처리에 매우 뛰어나기 때문에 간단합니다. Perl을 다른 언어와 비교한다면 Perl은 파일 처리, 텍스트 처리 및 출력 보고에 능숙한 최고의 언어가 될 것입니다.

Perl의 가장 큰 장점 중 하나는 무료로 사용 가능

Perl 커뮤니티는 소프트웨어가 자유롭게 이용 가능하고, 자유롭게 수정 가능하며, 자유롭게 배포될 수 있어야 한다고 굳게 믿습니다. Perl 커뮤니티의 여러 자원봉사자들은 프로그래밍 언어를 가능한 한 좋게 만들기 위해 노력합니다.

Perl의 장점과 단점

장점 : 단점 :

펄의 장점

펄의 단점

  • 다른 프로그래밍 언어에 비해 Perl은 텍스트 처리 및 구문 분석에 가장 강력합니다.
  • Perl 스크립트를 컴파일할 필요가 없으므로 실행 시간이 빠른 해석 언어입니다.
  • 간단하고 프로그래밍하기 쉽고 이해하기 쉽습니다.
  • 객체 지향입니다.
  • CPAN 라이브러리는 Perl 개발을 쉽게 해줍니다(이 주제에 대한 뒷부분에서 더 자세히 알아보겠습니다).
  • 주로 결제 게이트웨이의 웹 개발에 사용됩니다.
  • 자동화에 사용되며 대부분의 네트워크 및 스토리지 관련 항목을 테스트합니다.
  • 다른 프로그래밍 언어에 비해 최소한의 GUI 지원이 있습니다.
  • 이해하기 쉽지 않은 복잡한 라이브러리 모듈을 참조해야 합니다(작업 방법을 알게 되면 모든 것이 쉬워질 것이므로 두려워하지 마세요).
  • 복잡한 패턴을 이해하려면 경험이 필요합니다.

시작하자

Perl의 역사와 Perl로 코딩하는 데 필요한 컴퓨터 프로그래밍의 기본 개념에 대한 충분한 지식이 있으므로, 이제 뛰어들어 Perl을 시작할 때입니다. 다음 장에서는 시스템에 Perl을 설정하고 Perl로 코딩하는 여정을 준비하는 방법을 알려드립니다. 이 Perl 스크립팅 튜토리얼은 학생들이 Perl로 코딩하는 데 사용할 OS로 Linux를 사용합니다.

Perl 다운로드 및 설치 – Windows, 맥, 리눅스

펄을 구하는 방법?

희소식 아마 가지고 있을 거예요!

하지만 시스템에서 이미 찾을 수 없는 경우에도 무료로 얻을 수 있습니다.

Perl이 이미 설치되어 있는지 확인하려면 명령줄에 가서 다음을 입력하세요. perl -v

펄을 다운로드하는 방법

이 명령은 설치된 Perl 버전을 표시합니다. 이 경우 버전은 v5.14.2입니다. 하지만 그렇지 않다면… 당황하지 마세요…

유닉스초보자를 위한 PERL 튜토리얼 - 전체 가이드 이미 설치됨 Perl이 사전 설치되어 제공되지만 최신 버전으로 업데이트해야 할 수도 있습니다.
맥 OS 초보자를 위한 PERL 튜토리얼 - 전체 가이드 이미 설치됨 OSX에는 Perl이 사전 설치되어 있지만 최신 버전으로 업데이트해야 할 수도 있습니다.
Windows초보자를 위한 PERL 튜토리얼 - 전체 가이드 설치가 필요합니다 두 가지 옵션을 사용할 수 있습니다

  1. Strawberry Perl은 Perl의 오픈 소스 바이너리 배포판입니다. Windows OS. 여기에는 CPAN에서 직접 XS CPAN 모듈을 설치할 수 있는 기능을 제공하는 컴파일러 및 사전 설치된 모듈이 포함되어 있습니다.
  2. ActiveState Perl은 Perl의 바이너리 배포판(많은 플랫폼용)과 자체 Perl 패키지 관리자(PPM)를 제공합니다.

Linux에서 Perl 업데이트:

Perl 버전을 업데이트해야 하는 경우 명령줄 하나만 입력하면 됩니다.

sudo apt-get 설치 펄

그리고 긴장을 풀어라. 나머지는 처리됩니다. 인터넷에 연결되어 있는지 확인하세요.

Linux에서 PERL 업데이트

Linux에서 PERL 업데이트

다음에 대한 Perl 설치 Windows:

먼저 여기에서 Active Perl을 다운로드하세요. 링크. ActivePerl을 설치하려면 다음 단계를 따르세요. Windows 체계. 동일한 내용은 아래 스크린샷을 참조하세요.

1 단계 : 설치 프로그램을 다운로드하고 설치를 시작하면 아래 창이 표시되며 다음을 클릭하여 계속 진행합니다.

Perl을 설치하는 방법 Windows

2 단계 : 설치를 계속하려면 라이센스 계약에 동의하세요.

Perl을 설치하는 방법 Windows

3 단계 : 다음은 설치될 다양한 패키지입니다. 기본적으로 모두 선택됩니다. 유일한 차이점은 PPM(Perl Package Manager)입니다. 이것은 시스템에 외부 Perl 모듈이나 라이브러리를 설치하기 위해 Active Perl에서 제공하는 유틸리티입니다. 계속하려면 다음을 클릭하세요.

Perl 설치 Windows

4 단계 : Perl에 사용할 수 있는 다양한 유형의 Perl 확장이 있습니다. 대부분 우리는 Perl에 대해 .Pl, .Plx 및 .Pm을 사용할 것입니다. Perl 모듈은 기본적으로 라이브러리 파일을 참조하기 위해 파일 확장자로 .Pm을 사용합니다. 모든 옵션을 선택하고 다음 버튼을 클릭합니다.

Perl 설치 Windows

5 단계 : 설치 버튼을 클릭하여 설치를 진행합니다.

Perl 설치 Windows

6 단계 : 설치가 완료되면 'Perl –v' 명령을 실행하여 Perl이 시스템에 성공적으로 설치되었는지 확인합니다.

PERL 설치 Windows

Linux와 Perl 환경 모두에서 Perl 환경을 설정하려면 논의해야 할 사항이 많이 있습니다. Windows, 이 설치에는 라이브러리 파일이 많지 않기 때문입니다. 수동으로 설치해야 합니다. CPAN(Comprehensive Perl)을 사용하여 수동으로 설치할 수 있습니다. Archive Network) 또는 Perl Windows에서만 작동하는 PPM 중 하나. 하지만 이러한 파일은 Perl에서 코딩을 시작하는 데 필수는 아닙니다.

이 창 설정 외에도 다음을 사용할 수 있습니다. Windows Windows를 통한 Linux 하위 시스템의 10번째 새로운 기능 및 Perl 코드 실행에 사용

첫 번째 Perl 프로그램

Hello world!

Perl 예: Hello World

#!/usr/bin/perl -w
#this is just a comment…
print "Hello World";

이 텍스트를 이해하지 못하더라도 걱정하지 마십시오. 곧 모든 것이 명확해질 것입니다. 와서 한 줄씩 살펴보세요.

#!/usr/bin/perl		

이것은 Opera/usr/bin/perl에 있는 프로그램으로 이 파일을 실행하는 시스템 일부 IDE에는 이 줄이 필요하지 않습니다. 꼭 필요한 경우 통역사에 대한 경로를 여기에 적어야 합니다. 기억하다! 이 특수 라인은 프로그램 시작 부분에 있어야 하며 #!로 시작해야 합니다. 경고를 사용하십시오. 이것은 인터프리터에게 경고를 표시하도록 지시하는 또 다른 특수 명령입니다. 즉, 전역적으로 경고를 활성화하는 -w입니다.

print "Hello World";		

인쇄 명령은 화면에 텍스트를 씁니다. 줄 끝에 있는 세미콜론은 Perl 인터프리터에게 명령어가 끝났음을 알려줍니다. Perl 코드에서는 모든 명령어 끝에 세미콜론을 넣어야 합니다. 따옴표(“)를 주목하세요. 인쇄 교육을 위해 필요합니다. 위 스크립트를 firstprog.pl로 저장합니다.

On Windows

Strawberry가 설치되어 있으면 실행을 클릭하기만 하면 됩니다. 명령줄 인터페이스를 실행하고 콘솔에 쓸 수도 있습니다.

C:\> perl path\firstprog.pl		

또는 perl.exe가 경로에 없는 경우:

C:\> c:\perl\bin\perl.exe firstprog.pl		

리눅스/유닉스에서

터미널을 열고 다음을 작성하면 됩니다.

perl firstprog.pl		

프로그램을 실행할 수 없는 경우 프로그램을 실행할 자격이 있는지 확인하세요. 터미널에 다음을 입력하세요.

chmod +x firstprog.pl		

이제 프로그램이 실행 가능하고 실행할 준비가 되었습니다. 실행하려면 다음을 작성하십시오.

./firstprog		

cpan 마이너스 모듈 설치

모듈은 여러 프로그램에서 일반적인 작업을 수행하는 데 사용되는 코드 집합입니다. Perl 모듈을 사용하면 동일한 작업을 수행하기 위해 코드를 다시 작성할 필요가 없습니다. Perl은 이러한 외부 코드 라이브러리를 활용할 수 있습니다. 가장 좋은 라이브러리 중 하나는 CPAN입니다. Comprehensive Perl의 약자입니다. Archive Network에는 여러분이 사용할 수 있는 방대한 양의 Perl 모듈이 포함되어 있습니다. 이는 이러한 모듈을 기여하는 많은 개발자의 커뮤니티 또는 네트워크입니다. Perl 모듈에 CPAN 모듈에 대한 지원을 설치하면 CPAN 모듈을 사용하고 작업을 더 쉽게 만들 수 있습니다. 대부분의 Perl 모듈은 Perl로 작성되고 일부는 XS를 사용하므로(C로 작성됨) C 컴파일러가 필요합니다(이 설정은 쉽습니다. 당황하지 마세요. 모듈은 다른 모듈(거의 항상 CPAN에 있음)에 대한 종속성이 있을 수 있으며 해당 모듈(또는 특정 버전) 없이는 설치할 수 없습니다. 아래 옵션에 대한 설명서를 자세히 읽어볼 가치가 있습니다. CPAN의 많은 모듈은 이제 최신 버전의 Perl(버전 5.8 이상)이 필요합니다. CPAN에서 모듈을 가져오고, 압축을 풀고, 빌드하고, 설치하는 스크립트를 제외한 cpan을 설치하여 다른 모듈을 더 쉽게 설치할 수 있습니다(나중에 감사하게 될 것입니다). 설치하려면 앱-cpanminus Perl 모듈의 경우 명령줄에 다음을 입력합니다.

cpan App::cpanminus

cpan App::cpanminus Perl 모듈을 다운로드하고 설치하는 동안 인터넷에 연결되어 있는지 확인하세요.

cpan 마이너스 모듈 설치

이제 모듈을 설치하십시오.

cpan –i <Module_Name>.		

File::Data 모듈(파일 데이터에 접근하기 위한 인터페이스)을 설치하는 예를 살펴보겠습니다.

cpan 마이너스 모듈 설치

펄 변수

이제 변수에 대해 이야기하겠습니다. 하나 이상의 값을 보유하는 일종의 컨테이너와 같은 변수를 상상할 수 있습니다. 일단 정의되면 변수 이름은 동일하게 유지되지만 값은 계속해서 변경됩니다.

변수에는 3가지 유형이 있습니다.

Perl의 변수 유형

Perl의 변수 유형

가장 쉬운 것은 스칼라이며 이것이 오늘날 우리의 것입니다.

스칼라 변수

이 유형의 변수는 단일 값을 보유합니다.

그 이름은 달러 기호와 Perl 식별자(변수의 이름)로 시작됩니다.

Perl의 스칼라 변수

Perl의 스칼라 변수

명명 규칙

다른 프로그래밍 언어에 익숙하다면 변수 이름 지정에 대한 특정 규칙이 있다는 것을 알 수 있습니다. 마찬가지로 Perl에는 스칼라 이름 지정에 세 가지 규칙이 있습니다.

  1. 모든 스칼라 이름은 $로 시작됩니다. 모든 이름 앞에 $를 붙이는 것을 기억하는 것은 쉽습니다. $scalar라고 생각해보세요.
  2. PHP처럼요. Perl의 특수 문자인 $ 뒤에는 영숫자(a~z, A~Z, 0~9)가 허용됩니다. 밑줄 문자도 허용됩니다. 밑줄을 사용하여 변수 이름을 두 단어로 나눕니다. '그러나 첫 번째 문자는 숫자가 될 수 없습니다'
  3. 숫자가 이름의 일부가 될 수 있지만, $ 바로 뒤에 올 수는 없습니다. 즉, $ 뒤의 첫 글자는 알파벳이거나 밑줄입니다. C/에서 온 것C++ 배경은 유사성을 즉시 인식할 수 있어야 합니다. 예

펄 예:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

그러나 이는 유효한 스칼라 변수 이름이 아닙니다.

mohohoh                                              # $ character is missing 
$                                                    # must be at least one letter 
$47x                                           # second character must be a letter
$variable!                                 # you can't have a ! in a variable name

일반적인 규칙에 따르면 Perl이 무엇인가 중 하나만 가질 때 그것은 스칼라입니다. 스칼라는 장치에서 읽을 수 있으며 이를 프로그램에 사용할 수 있습니다.

두 가지 유형의 스칼라 데이터 유형

  1. Numbers
  2. 문자열

Numbers:

이러한 유형의 스칼라 데이터에서는 다음을 지정할 수 있습니다.

  • 정수, 간단히 말해서 2, 0, 534와 같은 정수입니다.
  • 부동 소수점 숫자는 3.14, 6.74, 0.333과 같은 실수입니다.

Perl의 숫자 변수

참고: 일반적으로 Perl 인터프리터는 정수를 부동 소수점 숫자처럼 봅니다. 예를 들어, 프로그램에 2를 쓰면 Perl은 2.0000처럼 봅니다.

정수 리터럴:

하나 이상의 숫자로 구성되며 선택적으로 앞에 플러스 또는 마이너스가 오고 밑줄이 포함됩니다.

펄 예:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

보시다시피 특별한 것은 아닙니다. 하지만 이것이 가장 일반적인 유형의 스칼라입니다. 그들은 어디에나 있습니다.

부동 소수점 리터럴:

숫자, 선택적으로 마이너스, 소수점 및 지수로 구성됩니다.

펄 예:

3.14;
255.000;
3.6e20;                                  # it's 3.6 times 10 to the 20th
-3.6e20;                                 # same as above, but negative
-3.6e-20;                                #it's negative 3.6 times 10 to the -20th
-3.6E-20;                                #we also can use E – this means the same the lowercase version -3.6e-20

Perl의 부동 소수점 리터럴

XNUMX진수, XNUMX진수 및 XNUMX진수 표현:

이는 십진법의 대안입니다. XNUMX진수, XNUMX진수, XNUMX진수 표현을 보여드리겠습니다. 짧은 표는 이 이상한 스타일에 대한 모든 중요한 정보를 제공합니다.

대표 Base 진행자
8 진법 8 0 (영)
진수 16 0x
이진 2 0b

펄 예:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

Perl에 대한 이러한 값은 모두 동일함을 의미합니다. Perl은 값을 동일한 형식으로 저장하지 않습니다. 내부적으로 이러한 XNUMX진수, XNUMX진수, XNUMX진수 값을 XNUMX진수 값으로 변환합니다.

할당은 스칼라에서 가장 흔한 연산이며 매우 간단합니다. Perl은 등호를 사용합니다. 오른쪽에서 표현식의 값을 가져와 이 값을 변수에 넣습니다.

예를 살펴보겠습니다.

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

게다가 숫자뿐만 아니라 표현식도 변수에 넣을 수 있습니다.

$z = 6 + 12               # give $z value of 18

문자열

문자열: 또한 매우 간단한 유형의 스칼라입니다.

Perl의 문자열 최대 길이는 컴퓨터의 메모리 양에 따라 다릅니다. 문자열 크기에는 제한이 없으며 문자, 기호 또는 단어의 양에 관계없이 문자열을 구성할 수 있습니다. 가장 짧은 문자열에는 문자가 없습니다. 가장 긴 메모리는 전체 시스템 메모리를 채울 수 있습니다. Perl 프로그램은 7비트 ASCII 문자 세트로 완전히 작성될 수 있습니다. Perl을 사용하면 8비트 또는 16비트 문자 세트(일명)를 추가할 수도 있습니다. 문자열 리터럴 내의 비ASCII 문자. Perl에는 유니코드 UTF-8에 대한 지원도 추가되었습니다.

Perl의 문자열 유형

숫자와 마찬가지로 문자열에도 두 가지 유형이 있습니다.

  • 작은따옴표 문자열 리터럴
  • Double 문자열 리터럴을 따옴표로 묶음

작은따옴표로 묶인 문자열 리터럴

작은따옴표는 문자 그대로 사용하려는 데이터를 묶는 데 사용됩니다. 간단한 예를 들면 모든 것이 명확해야 합니다.

펄 예:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

출력:

$num입니다

여기서는 작은따옴표로 인해 $num 값이 사용되지 않고 리터럴 문자 '$','n', 'u' & 'm'이 $txt 값에 추가됩니다.

Double-따옴표 붙은 문자열 리터럴

Double 따옴표는 처리 전에 보간해야 하는 데이터를 묶는 데 사용됩니다. 즉, 이스케이프된 문자와 변수는 단순히 문자 그대로 이후 작업에 삽입되는 것이 아니라 그 자리에서 평가됩니다. 이스케이프 문자는 줄바꿈, 탭 등을 삽입하는 데 사용할 수 있습니다.

펄 예:

$num = 7; 
$txt = "it is $num"; 
print $txt;

출력:

7입니다

여기서 큰따옴표로 인해 $num의 값이 $txt의 값에 추가됩니다.

Double-quotes는 스칼라와 배열 변수를 보간하지만 해시는 보간하지 않습니다. 반면에 큰따옴표를 사용하여 배열과 해시 둘 다의 슬라이스를 보간할 수 있습니다.

신비한 \n

다음 프로그램을 고려해보세요

펄 예:

print "hello \n";

출력:

안녕하세요

Perl은 'hello\n'만 표시하지 않고 'hello'만 표시합니다. 왜? '\n'은 특수 기호이고 프로그램에 텍스트를 표시하는 동안 새 줄로 이동한다는 의미이기 때문입니다. "hello\n new line"을 인쇄합니다; 다음 질문 - 다른 특별한 표시가 있나요? 예, 그렇습니다! 하지만 걱정하지 마세요. 몇 개만 있으면 됩니다. 아래 표를 확인해보세요

건설하다 상품 설명
\n 개행 문자
\r return
\t
\f 폼피드
\b 백 스페이스 키
\a
\e 탈출
\ 007 임의의 007진수 ASCII 값(여기서는 XNUMX = 벨)
\x7f 임의의 7진수 값(여기서는 XNUMXf = 삭제)
\\ 백 슬래시
\" 큰 따옴표
\l 소문자 다음 문자
\L \E까지 모든 문자를 소문자로 바꿉니다.
\u 대문자 다음 문자
\U \E까지 다음 모든 글자를 대문자로 바꾸세요
\E \L, \U 종료

나도 알아, '단지 몇 개'가 아니라는 걸… 하지만 내 말을 믿으세요.

문자열 변수

숫자 할당에서 보는 것과 같은 연산입니다. Perl은 등호의 오른쪽에서 문자열을 가져와 변수에 넣습니다.

펄 예:

$string = 'tutorial';                                      # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ;                                           # give $string the current value of $size plus 3
print $string;
$string = $ string * 5;                                         # multiplied $string by 5
print $string;

출력:

튜토리얼315

보시다시피, 숫자와 문자열을 같은 변수에 넣을 수 있습니다. 변수의 클래스는 없습니다.

문자열 연결(마침표):

연결 연산자 "."는 두 개 이상의 문자열을 하나로 합칩니다. 기억하세요! 문자열에 따옴표, 캐리지 리턴, 백슬래시가 포함되어 있으면 이러한 모든 특수 문자는 백슬래시로 이스케이프해야 합니다.

Perl ' ' 변수 예:

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

출력:

톰은 엄마가 가장 좋아하는 고양이예요

문자열

“$a”, “$b”는 “.” 연산자를 사용하여 연결되어 “$c”에 저장됩니다.

결국 ...

사이의 변환 Numbers 그리고 문자열:

아시다시피 Perl은 필요에 따라 숫자를 문자열로 자동 변환합니다. Perl은 지금 당장 필요한 것이 무엇인지 어떻게 알까요? 간단합니다. 모든 것은 연산자에 따라 달라집니다(나중에 연산자에 대해 이야기하겠습니다. 숫자와 문자열에 따라 연산자가 다르다는 것을 받아들이세요). 연산자가 숫자를 예상하면 Perl은 값을 숫자로 사용합니다. 연산자가 문자열을 예상하면 Perl은 값을 문자열로 사용합니다. 다시 말해, 이런 종류의 변환에 대해 걱정할 필요가 없습니다. 간단한 예를 들어보면 모든 것이 명확할 것입니다.

펄 예:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

출력:

71

$string의 값은 정수로 변환되어 $number의 값에 추가됩니다.

추가 결과 71이 $result에 할당됩니다.

변수 범위 - 액세스 한정자

프로그램의 어느 곳에서나 스칼라를 선언할 수 있습니다. 하지만 액세스 한정자를 지정해야 합니다.

수정자에는 3가지 유형이 있습니다.

  1. my
  2. 지방의
  3. 우리의

My: 이를 사용하면 블록 내 특정 변수를 선언할 수 있습니다. 즉, 중괄호 안에 있습니다.

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

출력 없음

프로그램의 출력은 아무것도 아닙니다!

초보자를 위한 PERL 튜토리얼 - 전체 가이드

위의 예에서는 선언된 두 개의 변수가 있음을 알 수 있습니다. 하나는 if 블록($var_2) 내부에 있고 다른 하나는 If 블록 외부($var)에 있습니다. 블록 외부에 선언된 변수는 if 블록에서 액세스할 수 있지만 if 블록 내부에 선언된 변수는 외부 프로그램에서 액세스할 수 없습니다.

로컬: 이를 사용하면 실제로 변수의 원래 값을 변경하지 않고 동일한 변수 값을 다른 값으로 마스킹할 수 있습니다. 값이 5로 할당된 변수 $a가 있다고 가정하면 실제로 해당 변수의 값을 다음과 같이 변경할 수 있습니다. 변수의 원래 값인 5를 변경하지 않고 로컬 키워드를 사용하여 동일한 변수를 다시 선언합니다. 이것이 어떻게 작동하는지 예제를 통해 살펴보겠습니다.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

위 프로그램의 출력은 다음과 같습니다.

로컬, $var = 3

전역, $var = 5

이렇게 하면 원래 값에 영향을 주지 않고 변수 값을 변경할 수 있습니다.

Our: 변수가 "our" 액세스 한정자를 사용하여 선언되면 전체 패키지에서 사용할 수 있습니다. 범위가 our로 선언된 변수가 있는 Perl 모듈이나 패키지 test.pm이 있다고 가정해 보겠습니다. 이 변수는 해당 패키지를 사용하는 모든 스크립트에서 액세스할 수 있습니다.

Perl 프로그래밍에 대해 진지하게 생각하고 있다면 다음과 같이 프로그램을 시작해야 합니다.

#!/usr/local/bin/펄

엄격한 사용;

이렇게 하면 더 좋고 깔끔한 코드를 작성하는 데 도움이 됩니다. 'use strict'는 strict pragma를 활성화하여 my 키워드로 변수를 선언하게 합니다.

이것은 좋은 프로그래밍 습관이다

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

결과: 오류

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

출력:

10

펄 어레이

Perl 배열이란 무엇입니까?

배열은 데이터를 목록 형태로 저장하는 특수한 유형의 변수입니다. 각 요소는 각 요소에 대해 고유한 인덱스 번호를 사용하여 액세스할 수 있습니다. 배열에 숫자, 문자열, 부동 소수점 값 등을 저장할 수 있습니다. 훌륭해 보입니다. 그러면 Perl에서 배열을 어떻게 만들까요? Perl에서는 '@' 문자 뒤에 지정하려는 이름을 사용하여 배열을 정의할 수 있습니다. Perl에서 배열을 정의하는 것을 고려해 보겠습니다.

내 @배열;

이것이 Perl에서 배열을 정의하는 방법입니다. 데이터를 어떻게 저장해야 하는지 생각할 수도 있습니다. 배열에 데이터를 저장하는 방법에는 여러 가지가 있습니다. 이는 사용 방법에 따라 다릅니다.

my @array=(a,b,c,d);
print @array;

출력:

ABCD

이것은 4개의 요소가 포함된 배열입니다.

배열 인덱스는 0부터 시작하여 선언된 최대 크기까지 끝납니다. 이 경우 최대 인덱스 크기는 3입니다.

Perl 배열 예

Perl 배열 예

위의 방법으로 배열을 선언할 수도 있습니다. 유일한 차이점은 공백을 구분 기호로 간주하여 데이터를 배열에 저장한다는 것입니다. 여기서 qw()는 인용문을 의미합니다. 이 기능의 중요성은 단어 목록을 생성하는 것입니다. 배열을 선언하기 위해 여러 가지 방법으로 qw를 사용할 수 있습니다.

@array1=qw/a b c d/;
@array2= qw' p q r s'; 
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;

출력:

abcdpqrsvxyz

5에 값을 할당한다고 가정합니다.th 배열의 요소, 어떻게 할 것인가?

$배열[4] ='e';

순차 배열

순차 배열은 데이터를 순차적으로 저장하는 배열입니다. 예를 들어, 1~10개의 숫자나 알파벳 az를 배열에 저장하고 싶다고 가정해 보겠습니다. 모든 문자를 입력하는 대신 아래와 같이 시도할 수 있습니다.

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

출력:

12345678910

Perl 배열 크기

이미 사용 가능한 배열이 있는데 그 배열의 크기가 얼마인지 알 수 없으므로 이를 찾는 가능한 방법은 무엇입니까?

@array= qw/a b c d e/;
print $size=scalar (@array);

함수를 사용하지 않고 배열의 크기를 얻을 수 있나요? 그래 우리는 할 수있어.

@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

출력:

5

5

동적 배열

위의 배열 선언 방법을 호출합니다. 정적 배열, 배열의 크기를 알 수 있습니다.

동적 배열이란 무엇입니까?

동적 배열은 값을 지정하지 않고 선언하는 배열입니다. 그러면 정확히 언제 해당 배열에 값을 저장합니까? 간단합니다. 런타임 중에 저장합니다. 여기에 이를 위한 간단한 프로그램이 있습니다.

우리는 이 작업을 수행하기 위해 내장된 Perl 함수를 사용할 것입니다.

my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \n”;
# This is a special variable which stores the current value.
}

출력:

이것은

일종의 딘

마이크

rr

y

분할 함수는 제공된 구분 기호를 기반으로 문자열의 내용을 배열로 분할합니다. 이 함수는 또한 문자열에서 구분 기호를 제거합니다. 이 경우에는 'a'입니다.

Perl 배열의 Push, Pop, shift, unshift:

이러한 함수는 Perl에서 배열 요소를 추가/삭제하는 데 사용할 수 있습니다.

  • Perl Push: 기존 배열의 끝에 배열 요소를 추가합니다.
  • Perl Pop: 배열에서 마지막 요소를 제거합니다.
  • 펄 Shift: 배열에서 첫 번째 요소를 제거합니다.
  • Perl Unshift: 배열의 시작 부분에 요소를 추가합니다.

Perl의 배열 함수

아래 함수를 사용할 수 있는 예를 살펴보겠습니다.

@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu");                                             # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri");                                          # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n";                                 # remove one element from the last of an array.
shift(@days);                                                   # remove one element from the beginning of an array.
print "5th when shift : @days\n";

출력:

1차 : 월 화 수

2차 푸시시 : 월 화 수 목

3번째 언쉬프트시 : 금, 월, 화, 수, 목

4번째 when pop : 금 월 화 수

5일 근무시 : 월 화 수

펄 해시

왜 해시가 필요한가요?

우리는 이전 섹션에서 스칼라와 배열에 대해 이미 배웠습니다.

스칼라는 정확히 무엇을 하는가? 정수와 문자열만 저장합니다.

배열은 정확히 어떤 역할을 하나요? 이는 인덱스를 사용하여 배열의 각 요소에 액세스하는 스칼라 모음입니다. 그런데 수백, 수천 개의 레코드가 있을 때 배열을 사용하는 것이 좋은 생각일까요? 어떤 인덱스가 어떤 값을 가지고 있는지 잊어버릴 것입니다. 이러한 상황을 극복하기 위해 Perl Hash와 같은 것이 있습니다.

해시란 무엇입니까?

해시는 배열이 보유할 수 있는 만큼 많은 스칼라를 보유할 수도 있습니다. 유일한 차이점은 인덱스가 없고 키와 값이 있다는 것입니다. %로 시작하고 그 뒤에 해시 이름이 오는 해시를 선언할 수 있습니다. Perl 해시를 정의하는 방법과 이를 배열과 구별하는 방법에 대한 예를 살펴보겠습니다.

세 사람의 나이가 배열로 표현되어 있는 예를 생각해 보세요.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

출력:

사이나스33Krishna24슈루티25

이렇게 하면 모든 사람의 이름과 나이의 색인 위치를 모두 기억해야 하기 때문에 개별 나이를 아는 것이 어렵습니다. 이름이 3개면 간단할 수도 있지만, 1000개 이상이면? 당신은 답을 알고 있습니다.

Perl의 해시

이 문제는 해시를 사용하여 극복할 수 있습니다.

해시 예:

print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.

출력:

사이나스33Krishna24슈루티25사이나트33Krishna24슈루티25

이제 해시를 선언했습니다. 좋습니다!! 하지만 어떻게 액세스하거나 인쇄합니까? 해시의 각 요소는 할당된 값이 있는 관련 키를 사용하여 액세스해야 합니다. 따라서 해시의 각 키와 값 사이에는 일대일 매핑이 있습니다.

어떤 사람의 나이를 인쇄하려면 그 사람의 이름만 기억하면 됩니다.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

내가 왜 $hash{KeyName}을 사용했는지 궁금할 수도 있습니다. 해시는 스칼라 모음이라는 점을 기억하세요. 따라서 스칼라를 나타내는 $를 사용하여 각 해시 요소에 액세스할 수 있습니다.

Perl의 해시 예

참고: 해시의 각 키는 고유해야 합니다. 그렇지 않으면 이전에 할당된 값을 재정의합니다.

해시를 다른 해시에 어떻게 할당할 수 있나요? 간단합니다. 우리와 같은 방식으로

전체 해시를 인쇄할 수도 있습니다.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

출력:

Tom23

Perl 해시 추가

보시다시피 우리는 이미 해시 %newHash를 가지고 있고 이제 여기에 더 많은 항목을 추가해야 합니다.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

출력:

짐25존26해리27

펄 삭제 키

해시에서 항목을 삭제할 수 있습니다. 이것이 우리가 할 수 있는 방법입니다.

delete $newHash{'Jim'};#This will delete an entry from the hash.

삭제는 Perl에 내장된 기능입니다. 여기서는 배열에 해시를 할당하는 예를 살펴보겠습니다.

@array=%newHash;
print "@array";

참고: 해시를 인쇄하거나 해시를 배열에 저장할 때마다. 순서는 항상 다를 수 있습니다. 항상 같은 것은 아닙니다.

해시의 키나 값만 배열에 할당할 수 있습니다.

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

해시의 모든 항목을 제거하려면 해시를 null에 직접 할당하면 됩니다.

%newHash=();# 이것은 항목 없이 해시를 재정의합니다.

Perl 조건문

Perl에서는 조건문을 사용할 수 있습니다. 그렇다면 조건문이란 무엇일까요? 조건문은 코드에서 일부 상황이 충족되는지 실제로 확인하는 문입니다.

예를 들어, 당신이 과일을 사고 있는데 가격이 100달러를 넘는 것을 좋아하지 않는다고 생각해 보세요. 따라서 여기서의 규칙은 100달러입니다.

Perl은 두 가지 유형의 조건문을 지원합니다. 그것은 만약과 그렇지 않은 경우입니다.

펄 If

조건이 참일 때 코드 블록이 실행됩니다.

Perl 조건문

my $a=5;
if($a==5)
{
   print "The value is $a";
}

출력:

5

Perl 다른 경우

좋아 보인다. $a가 5가 아닌 상황을 생각해 봅시다.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

출력:

값은 10입니다. —FAIL

이렇게 하면 한 번에 하나의 조건만 제어할 수 있습니다. 제한사항인가요? 아니요, if… elsif… else를 사용하여 다양한 조건을 제어할 수도 있습니다.

Perl Else If

my $a=5;
if($a==6)
{
    print "Executed If block -- The value is $a";
}
elsif($a==5)
{
    print "Executed elsif block --The value is $a";
}
else
{
    print "Executed else block – The value is $a";
}

출력:

elsif 블록 실행 – 값은 5

위의 경우 $a가 5이므로 elsif 블록이 실행됩니다.

if 및 elsif 코드 블록이 모두 실패하는 상황이 있을 수 있습니다. 이 시나리오에서는 else 코드 블록이 실행됩니다. 포함하고 싶지 않다면 실제로 else 코드 검사를 제거할 수 있습니다.

Perl 중첩된 경우

이 경우 if 코드 블록을 하나 더 추가하여 if 코드 블록을 사용할 수 있습니다.

my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
  print "Inside 1st if block";
        if($a<5){
                print "Inside 2nd if block --- The value is $a";
        }
        else{
                print " Inside 2nd else block --- The value is $a";
        }
	}
	else{
        	print "Inside 1st else block – The value is $a";
    }

출력:

첫 번째 else 블록 내부 – 값은 1입니다.

$a의 값을 변경하여 동일한 코드를 실행합니다. 나머지는 알 수 있습니다.

펄이 아니면

if가 무엇인지 이미 알고 있습니다(조건이 true이면 코드 블록이 실행됩니다). if의 반대가 아닌 경우, 조건이 거짓인 경우 코드 블록이 실행되지 않는 경우입니다.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

출력:

첫 번째 else 블록 내부 – 값은 1입니다.

어떤 결과가 나올지 추측해 보세요. 당신 말이 맞아요!!!!!. 출력은 else 블록의 print 문이 됩니다. 코드 블록이 true가 아닌 경우의 조건 때문에 조건이 false인 경우에만 블록이 실행되지 않는다는 점을 기억하세요. $a의 값을 변경하고 코드를 실행하면 차이점을 확인할 수 있습니다.

펄 사용 if

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

출력:

else 블록 내부

않는 한 사용

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

출력:

차단하지 않는 한 내부

Perl 루프 – 제어 구조

Perl은 다른 프로그래밍 언어와 유사한 제어 구조를 지원합니다. Perl은 foreach, while 및 Until에 대한 네 가지 유형의 제어 구조를 지원합니다. 우리는 이러한 명령문을 사용하여 일부 코드를 반복적으로 실행합니다.

For 루프 펄

조건이 만족될 때까지 코드 블록이 실행됩니다. Perl이 배열을 반복하는 방법에 대한 예를 들어 보겠습니다.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

출력:

배열 인덱스 0 값은 1입니다.

배열 인덱스 1 값은 2입니다.

배열 인덱스 2 값은 3입니다.

배열 인덱스 3 값은 4입니다.

배열 인덱스 4 값은 5입니다.

배열 인덱스 5 값은 6입니다.

배열 인덱스 6 값은 7입니다.

배열 인덱스 7 값은 8입니다.

배열 인덱스 8 값은 9입니다.

배열 인덱스 9 값은 10입니다.

여기서 for() 표현식에는 많은 문장이 포함되어 있습니다. 그들 각각에는 의미가 있습니다.

for(초기화; 조건; 증분)

for를 사용하는 또 다른 방법은 다음과 같습니다.

for(1..10)
{
    print "$_ n";
    print "\n";
}

출력:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

펄 포리치

for Each 문은 for와 같은 방식으로 사용할 수 있습니다. 가장 큰 차이점은 조건 확인 및 증분 기능이 없다는 것입니다.

foreach Perl을 사용하여 동일한 예를 들어보겠습니다.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

출력:

값은 1입니다.

값은 2입니다.

값은 3입니다.

값은 4입니다.

값은 5입니다.

값은 6입니다.

값은 7입니다.

값은 8입니다.

값은 9입니다.

값은 10입니다.

Foreach는 배열의 각 요소를 가져와서 반복할 때마다 해당 값을 $var에 할당합니다. $_도 같은 용도로 사용할 수 있습니다.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

출력:

값은 1입니다.

값은 2입니다.

값은 3입니다.

값은 4입니다.

값은 5입니다.

값은 6입니다.

값은 7입니다.

값은 8입니다.

값은 9입니다.

값은 10입니다.

이는 배열에 액세스하는 데 적합해 보입니다. 해시는 어떻습니까? foreach를 사용하여 해시 키와 값을 어떻게 얻을 수 있나요?

foreach를 사용하면 해시를 반복하여 해시의 키와 값에 액세스할 수 있습니다.

Perl의 For 루프

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

출력:

미키

남자 이름

작은 권총

foreach()에서 키를 사용한 이유가 궁금할 수도 있습니다. Keys는 해시의 키에 빠르게 액세스할 수 있는 Perl의 내장 기능입니다. 가치관은 어떻습니까? 해시 값에 액세스하기 위해 값 함수를 사용할 수 있습니다.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
	 print " the value is $value \n";
}

출력:

값은 24입니다.

값은 23입니다.

값은 25입니다.

펄 동안

Perl While 루프는 조건이 true가 될 때까지 코드 블록이 실행되는 제어 구조입니다.

조건이 false인 경우에만 코드 블록이 종료됩니다.

Perl While 루프의 예를 들어 보겠습니다.

Perl의 while 루프

여기에 사용자의 입력이 필요하고 '7'로 제공된 숫자가 나올 때까지 종료되지 않는 문제가 있습니다.

#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
	print "Guess a Number Between 1 and 10 \n ";
	$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"

출력:

1에서 10 사이의 숫자를 추측

9

1에서 10 사이의 숫자를 추측

5

1에서 10 사이의 숫자를 추측

7

행운의 숫자 7을 맞히셨나요?

위의 예에서는 '7' 이외의 값을 입력하면 while 조건이 true가 되지 않습니다.

여기서 while이 어떻게 작동하는지 보면 while의 조건이 true인 경우에만 코드 블록이 실행됩니다.

Perl do-while

Do while 루프는 while 섹션의 조건이 거짓이더라도 적어도 한 번은 실행됩니다.

do while을 사용하여 동일한 예를 들어보겠습니다.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

출력:

10

9

8

7

6

5

4

3

2

1

이제 값은 1보다 작습니다.

펄까지

코드 블록까지는 조건문에 없는 경우와 유사합니다. 여기서 코드 블록은 Until 블록의 조건이 거짓인 경우에만 실행됩니다.

잠시 동안 사용한 것과 동일한 예를 들어 보겠습니다.

여기에는 사용자의 입력이 필요하고 'sai' 이외의 이름이 제공될 때까지 종료되지 않는 문제가 있습니다.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

출력:

이름을 입력하세요.

Perl은 다음까지 수행합니다.

Do Until은 조건이 거짓이어야 하는 경우에만 사용할 수 있으며, 최소한 한 번은 실행해야 합니다.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

출력:

이름을 입력하세요 하워드

Sheldon의 이름을 입력하세요.

이름을 입력하세요.

while, do-while, Until 및 do-until 예제 코드를 실행하여 차이점을 확인하세요.

펄 Opera바위 산

Opera토르?

Opera컴퓨터 언어로 된 토르는 컴퓨터가 이해할 수 있는 일련의 변수나 값에 대해 수행할 수 있는 작업을 나타냅니다. Perl은 대부분의 기능을 통합했습니다. OperaC 언어의 연산자. Perl은 다른 프로그래밍 언어에 비해 많은 연산자를 가지고 있습니다. Opera연산자는 산술 연산자, 논리 연산자, 관계 연산자, 할당 연산자로 분류됩니다.

산수 Opera토르:

산술 연산자는 기본적인 수학 연산을 수행하는 데 사용할 수 있는 연산자입니다. 이러한 산술 연산자는 기본 연산을 수행하기 위해 두 개의 인수가 필요한 이진 연산자입니다. 다른 기본 연산에는 단항 연산자를 사용할 수도 있습니다. 아래 예에서 차이점을 확인할 수 있습니다.

Opera바위 산 상품 설명 예시

+

두 개의 값이나 변수를 더하는 데 사용되는 추가 연산

가치를 유지하다

$x=5+6; # 또는

$y=6;

$z=$x+$y;

-

두 개의 값이나 값을 유지하는 변수를 빼는 데 사용되는 뺄셈 연산자

$x=6-5; # 또는

$y=6;

$z=$x-$y;

*

두 개의 값이나 값을 유지하는 변수를 곱하는 데 사용되는 곱셈 연산자

$x=6*5; # 또는

$y=6;

$z=$x*$y;

/

두 개의 값 또는 값을 유지하는 변수를 나누는 데 사용되는 나누기 연산자

$x=36/6; # 또는

$y=6;

$z=$x/$y;

**

지수 연산자는 지수를 제공하고 값을 얻는 데 사용됩니다.

예 : 22 = 43 = 27

$x=5**5; # 또는

$x=4;

$y=2;

$z=$x**$y;

%

두 개의 값 또는 값을 유지하는 변수를 나누는 동안 알림을 받기 위해 사용되는 모듈러스 연산자

$x=5%2; # 또는

$x=10;

$y=2;

$z=$x % $y;

++

변수 값을 1씩 증가시키는 단항 덧셈 연산자

$x=5;

$x++;

Or

++$x;

-

변수 값을 1만큼 감소시키는 단항 뺄셈 연산자

$x=5;

$x–; # 포스트 감소

Or

–$x;# 사전 감소

위의 모든 작업을 완료하는 예입니다.

my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");

출력:

10과 2를 더하면 12가 됩니다.

10과 2의 하위는 8입니다.

10과 2의 Mul은 20입니다.

10과 2의 div는 5입니다.

10과 2의 경험치는 100입니다.

10과 2의 모드는 0입니다.

할당 Opera토르:

할당 연산자는 단순히 변수에 값을 할당하지만, 여기서 기억해야 할 사항이 하나 더 있습니다. 할당 연산자는 산술 연산도 수행하고 연산이 수행된 동일한 변수에 새 값을 할당한다는 것입니다.

Opera바위 산 상품 설명 예시

+=

같은 변수에 값을 추가하고 할당하는 데 사용되는 추가 연산자

$x=4;

$x+=10;

-=

같은 변수에 값을 빼고 할당하는 데 사용되는 뺄셈 연산자

$x=4;

$x-=10;

*=

같은 변수에 값을 추가하고 할당하는 데 사용되는 곱셈 연산자

$x=4;

$x*=10;

/=

나누기 연산자는 같은 변수에 값을 나누어 할당하는 데 사용됩니다.

$x=4;

$x/=10;

**=

지수 연산자는 지수를 구하고 같은 변수에 값을 할당하는 데 사용됩니다.

$x=4;

$x**=10;

%=

나누기 중에 알림을 받고 같은 변수에 값을 할당하는 데 사용되는 모듈러스 연산자

$x=10;

$x%=4;

위의 모든 작업을 완료하는 예입니다.

my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");

출력:

추가 = 15

하위= 10

멀 = 50

사업부 = 10

논리 및 관계 Opera토르:

Perl은 논리 연산자를 사용하여 숫자와 문자열을 비교합니다. 대부분의 경우 논리 연산자는 조건문에서 사용됩니다.

논리 및 관계 OperaPerl의 토르

논리 및 관계 OperaPerl의 토르

Opera바위 산 상품 설명

==또는 eq

Opera두 변수가 동일한지 확인하는 데 사용되는 Tor

!=아니면 안돼

Opera두 변수가 동일하지 않은지 확인하는 데 사용되는 Tor

> 또는 gt

Opera여부를 확인하는 데 사용되는 토르

A가 B보다 큼

<또는

Opera여부를 확인하는 데 사용되는 토르

A는 B보다 작습니다.

>=또는 게

Opera여부를 확인하는 데 사용되는 토르

A는 B보다 크거나 같음

<=또는 르

Opera여부를 확인하는 데 사용되는 토르

A는 B보다 작거나 같음

|| 또는 또는

OperaA 또는 B가 보유 가치를 확인하는 데 사용되는 Tor

&&또는 그리고

OperaA와 B가 모두 가치를 보유하고 있는지 확인하는 데 사용되는 토르

모든 시나리오를 설명할 수 있는 예를 들어 보겠습니다.

my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}

출력:

참 — 5와 5와 같습니다

참 — 6과 7이 아님

참 — 7보다 6이 큼

참 — 6보다 7이 작음

참 — 6보다 7이 작음

참 — 7보다 6이 큼

논리 연산자의 예는 나중 섹션에서 볼 수 있습니다.

Perl 특수 변수

Perl 특수 변수란 무엇입니까?

Perl의 특수 변수는 미리 정의된 의미를 갖는 변수입니다. 이러한 변수는 실제 이름 또는 구두점 기호로 표시됩니다. 스칼라 특수 변수, 배열 특수 변수, 해시 특수 변수와 같은 모든 Perl 지원 변수에 대한 특수 변수가 있습니다. 우리가 사용하는 대부분의 특수 변수는 스칼라입니다.

이름이 있는 특수 변수를 사용하려면 Perl 모듈 '영어 사용'을 로드하여 해당 이름을 사용하여 특수 변수를 사용할 것임을 Perl 인터프리터에 명시적으로 알려야 합니다.

스칼라 특수 변수

변하기 쉬운 상품 설명

$_$ARG

현재 값을 저장하는 기본 변수입니다.

$0 또는 $PROGRAM_NAME

Perl 스크립트의 파일 이름을 저장합니다.

$/

입력 레코드 구분 기호로, 기본값은 개행 문자인 '\n'입니다.

$.

읽고 있는 파일의 현재 줄 번호를 보유합니다.

$,

출력 필드 구분 기호는 주로 print() 문에서 사용됩니다. 기본값은 0으로 설정되어 있으며 이 변수의 값을 변경할 수 있습니다.

$\

출력 레코드 구분 기호, 이 변수의 값은 비어 있습니다. 출력을 인쇄하는 동안 print() 문에서 사용되는 값을 여기에 할당할 수 있습니다.

$#

이 변수는 숫자를 인쇄할 때 출력 형식으로 사용됩니다.

$%$FORMAT_PAGE_NUMBER

읽은 파일의 현재 페이지 번호를 보유합니다.

$=$FORMAT_LINES_PER_PAGE

읽은 파일의 현재 페이지 길이를 유지합니다.

$-$FORMAT_LINES_LEFT

페이지에서 인쇄할 남은 줄 수의 값을 보유합니다.

$~$FORMAT_NAME

형식 이름: 기본적으로 파일 핸들 이름으로 현재 선택된 출력의 형식을 유지합니다.

$^$FORMAT_TOP_NAME

파일 핸들러의 제목 형식 값을 보유하며, 기본값은 _TOP 뒤에 파일 핸들 이름이 옵니다.

$|$OUTPUT_AUTOFLUSH

기본값은 0입니다. 이는 write() 또는 print()를 호출한 후 출력 버퍼를 플러시하는 데 사용됩니다.

$$

Perl 인터프리터의 실행 중인 프로세스 번호를 보유합니다.

$?

상태 코드: 파이프 및 시스템 호출. 실행된 명령의 반환 상태입니다.

$&$매치

정규식에 사용되며 마지막으로 성공한 패턴 일치 문자열을 보유합니다.

$`$사전 경기

정규식에 사용되며 마지막으로 성공한 패턴 일치가 앞에 오는 문자열을 보유합니다.

$'$경기 후

정규식에 사용되며 마지막으로 성공한 패턴 일치가 뒤따르는 문자열을 보유합니다.

$+$LAST_PAREN_MATCH

마지막 패턴 검색과 일치하는 마지막 대괄호의 문자열을 보유합니다.

$

1달러, 2달러, 3달러… 순서대로 일치하는 패턴의 값을 보유합니다.

$[

첫 번째 인덱스: 배열, 하위 문자열.

$]

펄의 버전.

$”

목록 요소에 사용되는 구분 기호는 기본적으로 공백입니다.

$;

다차원 배열에 사용되는 첨자 구분 기호

$!

숫자 컨텍스트에서는 오류 번호를 인쇄합니다. 문자열 컨텍스트에서 오류를 인쇄합니다.

$@

eval()이 사용될 때 사용되는 구문 오류 정보를 보유합니다.

$<

스크립트를 실행하는 프로세스의 실제 UID(사용자 ID)를 보유합니다.

$>

스크립트를 실행하는 프로세스의 유효 UID를 보유합니다.

$(

스크립트를 실행하는 프로세스의 실제 GID(그룹 ID)를 보유합니다.

$)

스크립트를 실행하는 프로세스의 유효 GID를 보유합니다.

$^D$디버깅 중

디버깅 플래그의 현재 값을 보유합니다.

$^C

–c 명령줄 스위치가 사용될 때 플래그의 현재 값을 유지합니다.

$^F

최대 시스템 파일 설명자는 기본적으로 2로 설정됩니다.

$^I$INPLACE_EDIT

–i 명령줄 스위치의 값을 보유합니다.

$^M

메모리 부족 오류로 인해 Perl 스크립트가 종료될 때 특수 메모리 풀을 사용할 수 있습니다.

$^O$OSNAME

Opera시스템 정보가 저장됩니다. Linux 시스템의 경우 'Linux', Linux 시스템의 경우 'mswin32' Windows 시스템.

$^T$기본 시간

스크립트가 실행되는 시간(초)입니다.

$^W$경고

–w 명령줄 스위치의 현재 값입니다. 경고 스위치.

$ARGV

<>를 사용할 때 현재 파일의 이름입니다.

배열 특수 변수:

변하기 쉬운 상품 설명

@INC

현재 스크립트를 실행하는 동안 Perl 라이브러리 모듈이나 스크립트를 조사할 수 있는 경로 목록을 보유합니다. 이 @INC는 라이브러리 모듈의 경로를 조사하기 위해 use 및 require 문에서 사용됩니다.

@ARGV

전달된 명령줄 인수를 저장합니다.

@_

서브루틴에 매개변수를 전달하는 동안 서브루틴에 사용됩니다.

@F

이는 자동 분할 -a(명령줄 스위치 사용) 시 입력 라인이 저장되는 배열입니다.

해시 특수 변수:

변하기 쉬운 상품 설명

%INC

파일 이름이 키가 됩니다. 값은 해당 파일의 경로가 됩니다. do, use 및 require에 의해 사용됩니다.

%ENV

시스템 환경 변수.

%SIG

Signal핸들러.

Perl 정규식

정규 표현식이란 무엇입니까?

Perl 정규 표현식은 문장이나 문장 그룹 내의 문자열 패턴을 일치시키는 데 충분히 강력합니다. 정규 표현식은 주로 텍스트 구문 분석, 패턴 일치 및 요구 사항에 따라 훨씬 더 많이 사용됩니다. 정규 표현식 패턴 바인딩 =~ 및 !~에서 특별히 사용되는 특정 연산자가 있습니다. 이들은 테스트 및 할당 연산자입니다.

정규 표현식 Opera토르

정규 표현식 OperaPerl의 토르

정규 표현식 OperaPerl의 토르

  • 펄 일치 — m//
  • Perl 대체 – s///
  • Perl 음역 – tr///

더 진행하기 전에 정규 표현식에 대해 몇 가지 알아야 합니다. Perl Regex 구문에는 메타 문자, 와일드카드와 같은 특정 항목이 있습니다.

의미

\

특별 또는 견적

*

0개 이상의 문자와 일치

+

1개 이상의 문자와 일치

?

0 또는 1개의 문자와 일치

|

대체 패턴을 일치시키는 데 사용할 수 있습니다.

()

일치하는 패턴을 저장하는 데 사용됩니다.

[]

문자 집합을 전달할 수 있습니다. 특히 숫자와 알파벳에 사용됩니다.

{}

일치를 수행할 수 있는 시간을 제공하는 데 사용됩니다.

^

문자열의 시작

$

문자열의 끝

\w

"_"를 포함하여 영숫자일 수 있는 단일 문자 또는 단어를 일치시키는 데 사용됩니다.

\W

영숫자 이외의 항목과 일치

\s

공백을 일치시키는 데 사용됩니다.

\S

공백 이외의 항목과 일치

\d

숫자 일치. 소수점 값과 음수 값이 아님

\D

숫자가 아닌 다른 모든 것을 일치시킵니다.

\t

탭 공간 일치

\n

개행 일치

위는 패턴 매칭 시 사용할 수 있는 문자 집합입니다.

몇 가지 예를 살펴보겠습니다.

사용자가 스크립트 실행 중에 일부 입력을 제공하는 상황을 고려하고 사용자가 입력으로 일부 이름을 입력했는지 여부를 확인하고 싶습니다. 귀하의 이름을 추출하고 이를 인쇄하려면 정규식 구문을 작성해야 합니다.

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

출력:

발견된 패턴

여기서는 /.*(Guru99).*/.* 문자열의 모든 문자와 일치하는 정규식을 작성했습니다. ㅏ '.' Perl 정규식 일치에서는 공백을 포함한 모든 문자를 나타냅니다.

Regex를 정확히 어떻게 구성할 수 있는지 살펴보겠습니다.

여러 단어와 숫자로 구성된 문자열과 "안녕하세요 여러분, 제 전화번호는 +91-99298373639입니다"와 같은 특수 기호의 예를 생각해 보세요.

정규식 : /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

단어 공백 단어 공백 단어 공백 단어 공백 단어 공백 단어 공백 특수 문자 : 공백 특수 문자+숫자 특수 문자 –숫자.

펄 매치 Opera토르

일치 연산자는 어떤 문장이나 변수 내의 문자열을 일치시키는 데 사용됩니다.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

출력:

참된

이 작은 코드는 'true'를 인쇄합니다. perl 패턴 매칭은 변수의 문자열을 식별하기 때문입니다. 기본적으로 Perl은 문자열 전체에서 //에 제공된 텍스트를 검색합니다. 한 곳에서 발견하더라도 'true'를 반환합니다. 패턴은 변수의 어디에나 있을 수 있습니다. 두 연산자의 차이점을 보려면 =~를 !~로 바꿔볼 수 있습니다.

펄 대체 Opera바위 산

이 연산자는 모든 문자를 검색하여 null이나 다른 문자로 바꾸는 데 사용할 수 있습니다.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

출력:

첼로 잘 지내?

참고: 우리는 실제로 이 대체 연산자에서 이전에 했던 것처럼 모든 패턴 매칭 문자열을 사용할 수 있습니다. 여기서 우리는 'gi', g-전역, i-대소문자 무시를 사용했습니다.

펄 번역 Opera바위 산

이는 대체와 유사하지만 Perl 정규식을 사용하지 않고 대체하려는 값이나 단어를 직접 전달할 수 있습니다.

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

출력:

소님 안녕하세요?

Perl 파일 I/O

Perl은 파일과 I/O 작업을 효과적으로 조작하도록 설계되었습니다. Perl의 주요 장점은 파일 파싱과 파일 처리에 있습니다. Perl에서 파일 처리 중에 사용되는 내장 함수와 연산자가 많이 있습니다.

기본적으로 Perl로 수행되는 파일 작업은 FILEHANDLE을 사용하여 수행됩니다. 읽기 또는 쓰기를 위해 파일을 여는 동안 이 FILEHANDLE을 정의해야 합니다.

이 Perl 스크립트 튜토리얼에서는 다음을 배우게 됩니다.

펄 파일 열기

Perl에서 제공되는 open() 함수를 사용하여 파일을 열 수 있습니다.

open(FILEHANDLE, "filename or complete path of the file");

이제 파일을 열었으니 이제 질문이 생깁니다. 읽기용인가요, 쓰기용인가요?

Perl 읽기 파일 및 Perl 쓰기 파일

Perl에는 파일을 읽고, 쓰고, 추가하는 데 사용되는 특정 모드가 있습니다.

Read – open(my $fh,"<filename or complete path of the file"); 
Write – open(my $fh,">filename or complete path of the file");
Append – open(my $fh,">>filename or complete path of the file");

파일 읽기에 대한 몇 가지 예:

Perl에서 파일 읽기

file.txt라는 이름의 Perl 파일이 있고 그 안에 몇 줄의 텍스트가 있다고 가정해 보겠습니다. 이 파일을 열고 동일한 내용을 인쇄해야 합니다.

open(FH,"<file.txt"); 
while(<FH>)    # Looping the file contents using the FH as a filehandle. 
{
	print "$_";
}
close FH;

or

open(FH,"<file.txt"); 
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
	print "$_";
}
close FH;

그러면 출력 화면에 파일 내용이 인쇄됩니다.

이제 Perl 파일에 데이터를 생성하고 쓰는 프로그램을 작성하겠습니다.

Perl로 파일 쓰기

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

그러면 런타임 중에 제공된 입력이 작성되고 입력이 포함될 test.txt 파일이 생성됩니다.

위의 방법은 항상 test.txt라는 파일을 생성하려고 시도하고 입력을 파일에 씁니다. 파일을 추가하기 위해 동일한 내용을 작성하겠습니다.

Perl에서 파일 추가 작업

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
모드 상품 설명

<

읽기

+<

읽기 및 쓰기

>

생성, 쓰기 및 자르기

+>

읽기, 쓰기, 생성 및 자르기

>>

쓰기, 추가 및 생성

+>>

읽기, 쓰기, 추가 및 생성

이제 기본 예제를 사용하여 파일을 읽고, 쓰고, 추가하는 방법을 살펴보겠습니다.

파일에 대해 더 많이 이해하는 데 도움이 되는 몇 가지 예제와 기타 기능을 더 살펴보겠습니다.

펄 텔

이 메소드는 지정된 경우 FILEHANDLER의 현재 위치를 바이트 단위로 반환합니다. 그렇지 않으면 마지막 줄을 위치로 간주합니다.

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

펄 시크

Seek 기능은 fseek 시스템 호출과 유사합니다. 이 메서드는 파일 포인터의 시작이나 파일 포인터의 끝 뒤에 바이트를 지정하여 파일 포인터를 특정 위치에 배치하는 데 사용됩니다.

seek FH, bytes, WHENCE;

WHENCE는 시작할 파일 포인터의 위치입니다. XNUMX은 파일 시작 부분부터 설정합니다.

예: Let input.txt에는 "Hello this is my world"와 같은 데이터가 있습니다.

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

출력:

이건 내 세상이야

펄 링크 해제

연결 해제는 파일을 삭제하는 데 사용됩니다.

unlink("filename or complete file path");

디렉토리 처리:

또한 여러 파일을 처리할 수 있는 디렉터리를 처리할 수도 있습니다.

디렉토리를 여는 방법을 살펴보겠습니다. opendir 및 readdir 메소드를 사용할 수 있습니다.

opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.

while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
   print "$_\n";
}
closedir(DIR); #used to close the directory handler.

or

opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
	print "$_\n";
}
closedir(DIR);

그러면 해당 디렉토리에서 사용 가능한 모든 파일이 인쇄됩니다.

Perl 파일 테스트 및 그 의미

-r

현재 사용자/그룹이 파일/디렉토리를 읽을 수 있는지 확인하려면

-w

현재 사용자/그룹이 파일/디렉토리에 쓸 수 있는지 확인하려면

-x

현재 사용자/그룹이 파일/디렉터리를 실행할 수 있는지 확인하려면

-o

현재 사용자가 파일/디렉토리를 소유하고 있는지 확인하려면

-R

이 실제 사용자/그룹이 파일/디렉토리를 읽을 수 있는지 확인하려면

-W

이 실제 사용자/그룹이 파일/디렉토리에 쓸 수 있는지 확인하려면

-X

이 실제 사용자/그룹이 파일/디렉터리를 실행할 수 있는지 확인하려면

-O

이 실제 사용자가 파일/디렉토리를 소유하고 있는지 확인하려면

-e

파일/디렉터리 이름이 존재하는지 확인하려면

-z

파일이 존재하고 크기가 XNUMX인지 확인하려면(디렉토리의 경우 항상 false)

-f

항목이 일반 파일인지 확인하려면

-d

Entry가 디렉터리인지 확인하려면

-l

Entry가 심볼릭 링크인지 확인하려면

-S

Entry가 소켓인지 확인하려면

-p

Entry가 명명된 파이프(“FIFO”)인지 확인하려면

-b

항목이 블록 특수 파일(예: 마운트 가능한 디스크)인지 확인하려면

-c

Entry가 문자 특수 파일(예: I/O 장치)인지 확인하려면

-u

파일 또는 디렉토리가 setuid인지 확인하려면

-g

파일 또는 디렉터리가 setgid인지 확인하려면

-k

파일이나 디렉토리에 고정 비트가 설정되어 있는지 확인하려면

-t

주어진 파일 핸들은 TTY입니다(isatty() 시스템 함수에 의해 파일 이름은 이 테스트로 테스트될 수 없습니다)

-T

파일이 "텍스트" 파일처럼 보이는지 확인하려면

-B

파일이 "바이너리" 파일처럼 보이는지 확인하려면

-M

파일의 수정 기간(일 단위로 측정)을 확인하려면

-A

파일의 액세스 기간(일 단위로 측정)을 확인하려면

-C

파일의 Inode 수정 기간(일 단위로 측정)을 확인하려면

펄 서브루틴

서브 루틴이란?

서브루틴 다른 프로그래밍 언어의 함수와 유사합니다. 우리는 이미 인쇄, 씹기, 자르기 등과 같은 일부 내장 기능을 사용했습니다. Perl에서 자체 서브루틴을 작성할 수 있습니다. 이러한 서브루틴은 프로그램의 어느 위치에나 작성할 수 있습니다. 코드의 시작 부분이나 끝 부분에 서브루틴을 배치하는 것이 좋습니다.

PERL의 서브루틴

서브루틴 예

sub subroutine_name 
{
	Statements…;    # this is how typical subroutines look like.
}

이제 우리는 서브루틴을 작성하는 방법을 알았습니다. 어떻게 액세스합니까?

'&' 기호가 앞에 붙은 서브루틴 이름을 사용하여 서브루틴에 액세스하거나 호출해야 합니다.

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

Perl 매개변수 및 Perl 인수 전달

재사용 가능한 코드를 삽입하기 위해 서브루틴이나 Perl 함수가 작성됩니다. 대부분의 재사용 가능한 코드에서는 매개변수를 서브루틴에 전달해야 합니다. 여기서는 서브루틴에 인수를 전달하는 방법을 알아봅니다.

sub display
{		
	my $var=@_; # @_ is a special variable which stores the list of arguments passed.		
	print "$var is the value passed";		
}		
display(2,3,4);    #this is how we need to pass the arguments.

출력:

3은 전달된 값입니다.

@_는 서브루틴에 전달된 인수를 저장하는 특수 배열 변수입니다.

펄 Shift

또한 'shift' 키워드를 사용하여 한 번에 하나의 매개변수를 @_ 배열의 개별 요소인 변수 또는 $_[0],$_[1]…로 이동할 수도 있습니다.

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

출력:

안녕하세요 합격했습니다

서브루틴은 일반적으로 객체 지향 프로그래밍에 사용되며 재사용 가능한 코드를 더 많이 배치할 수 있는 곳에서도 사용됩니다.

서브루틴의 주요 기능은 일부 작업을 수행하고 재사용 가능한 코드의 결과를 반환하는 것입니다.

초보자를 위한 PERL 튜토리얼 - 전체 가이드

return 키워드를 사용하여 서브루틴에서 값을 반환할 수 있습니다.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

출력:

11

$result는 추가된 $a 및 $b의 값을 보유합니다.

해시와 배열을 서브루틴에 직접 전달할 수도 있습니다.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

출력:

1a2b

해시나 배열을 반환할 수도 있습니다.

sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;

출력:

서브루틴 내부2b1a서브루틴 호출 후2b1a

펄 형식

Perl에는 보고서를 생성할 수 있는 메커니즘이 있습니다. 이 기능을 사용하면 출력 화면이나 파일에 인쇄하는 동안 원하는 대로 보고서를 만들 수 있습니다. 간단한 형식은 Perl에서 사용할 수 있는 printf 또는 sprintf 함수를 사용하여 작성할 수 있습니다.

printf "%05d\n", 30;

여기에는 숫자 30 앞에 5이 추가되어 총 숫자가 XNUMX가 됩니다. 이는 sprintf에도 동일하게 사용할 수 있습니다.

sprintf "%05d\n", 30; # This will print the same as printf.

printf와 sprintf를 사용하면 대부분의 Perl 형식을 얻을 수 있습니다. 보고서의 경우 구현하기 어려울 것입니다.

펄 형식

보고서의 예:

================================================== =========================
이름 주소 나이 전화번호
================================================== =========================
Krishna 첸나이 24 929309242
슈루티 첸나이 24 929309232

위의 예는 Perl에서 같은 방식으로 인쇄해야 한다는 것을 보고하는 예입니다. 이는 perl printf와 perl sprintf를 사용하여 달성할 수 있습니다. format을 사용하여 효과적으로 구현할 수 있습니다.

형식은 아래와 같은 방식으로 선언할 수 있습니다.

format FORMATNAME=FORMATLIST.

여기서는 데이터를 출력 화면이나 파일에 인쇄하기 위해 특별한 write 메소드를 사용할 것입니다.

상징 상품 설명

@

필드 홀더의 시작을 나타내는 데 사용됩니다.

>

텍스트의 오른쪽 정렬

<

텍스트 왼쪽 정렬

|

중앙 정렬

#

#이 여러 개인 경우 숫자입니다. 단일 #이 제공되면 주석으로 간주됩니다.

.

소수점

^

필드 시작 홀더는 여러 줄 및 단어 줄 바꿈에도 사용할 수 있습니다.

~

변수가 비어 있으면 줄도 비어 있어야 합니다.

@*

여러 줄.

($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); 
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write; 
format STDOUT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format STDOUT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone 
.

코드를 실행하여 출력을 확인하세요.

@ 기호를 사용하여 필드 홀더 또는 문자열의 시작(각 문자 '<')을 지정합니다.

표준 출력으로 인쇄하기 위해 STDOUT을 사용하고 있습니다. 이를 파일에 데이터를 쓰는 데 사용하는 파일 핸들러로 변경할 수 있습니다.

open(REPORT,">test.txt"); 
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); 
write REPORT; 
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write REPORT; 
format REPORT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format REPORT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone

'<'를 '>' 또는 '|'로 바꿀 수 있습니다. 텍스트의 정렬을 변경하려면 STDOUT_TOP를 사용하여 형식의 헤더를 디자인합니다. FH_TOP(FH는 파일 처리기)을 사용하여 파일 처리기와 동일하게 사용할 수도 있습니다. 이는 작업 중인 파일에 형식을 출력합니다. 에.

Perl 코딩 표준

각 프로그래머는 특정 표준을 사용하여 코드를 작성하는 자신만의 감각을 가지고 있습니다. 이러한 표준은 다른 프로그래머가 코드를 적절하게 이해하고 지원할 수 있을 만큼 익숙해야 합니다.

Perl의 코딩 표준

Perl의 코딩 표준

코드 작성은 간단하고 쉽습니다. 문제는 나중에 유지 관리해야 할 때 발생합니다. 코드를 작성하는 동안 적절한 지침과 코딩 표준을 따라야 합니다. Perl은 또한 프로그래머가 코드를 작성하는 데 유용한 특정 표준을 정의합니다. 코드를 작성하는 동안 'strict' 및 'warnings 모듈'을 로드하는 것이 좋습니다. 이러한 각 모듈은 고유한 중요성을 가지고 있습니다. Strict는 사용하기 전에 변수를 선언하고 코드에 베어워드가 있는지 알려줍니다. Warnings 모듈은 Shebang에서 Perl 인터프리터에 '-w' 옵션을 전달하여 사용할 수도 있습니다. Warnings는 출력 화면에 인쇄됩니다.

#!/usr/bin/perl –w

다음은 몇 가지 표준 목록입니다.

  • 'strict' 및 'warnings' 모듈을 사용하세요.
  • 사용하지 않는 변수를 제거합니다.
  • 변수 이름은 다른 사용자가 이해할 수 있어야 합니다. 예: $name, @fileData 등
  • 스크립트를 코딩하는 동안 문서화가 필요합니다.
  • 값을 하드코딩하지 말고 동적으로 가져오거나 런타임 중에 사용자에게 입력하도록 요청하십시오.(파일 경로, 파일 이름)
  • 코드 재사용을 극대화합니다. 재사용 가능한 코드를 서브루틴에 넣어보세요.
  • 즉, 서브루틴에는 전체 이름이 제공되어야 합니다.
  • 서브루틴은 적절한 주석 및 문서와 함께 작성되어야 합니다.
  • 항상 변수를 초기화하십시오.
  • 항상 시스템 호출에 대한 반환 코드를 확인하세요. 파일 열기가 발생할 수도 있고 그렇지 않을 수도 있습니다. 여기에 반환 코드가 있으면 파일이 존재하지 않는 경우 오류 상태가 표시됩니다.

    예: 개방형(FH,

  • 서브루틴은 항상 값을 반환해야 합니다.
  • 같은 줄에 곱슬머리를 엽니다.
  • 한 줄 BLOCK은 곱슬 모양으로 한 줄에 배치될 수 있습니다.
  • LOOPS 중에 레이블을 사용하면 필요할 때마다 루프를 쉽게 종료할 수 있습니다.
  • 긴 단어 구문을 변수 이름이나 서브루틴으로 작성하는 경우 밑줄을 사용하세요.
  • 코딩하는 동안 간단한 정규식을 사용해 보세요.

코딩 표준의 완벽한 예:

#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl 
use strict;
use warnings; 
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>) 
{   
	print $line;
} # Looping file handler to print data

펄 오류 처리

예외란 무엇입니까?

예외는 프로그램 실행 중에 발생하여 프로그램을 일시 중단하거나 종료하는 이벤트입니다.

오류 처리

오류 처리는 모든 프로그래머가 프로그래밍 중에 주의해야 하는 것입니다. Perl은 또한 오류를 포착하고 이에 따라 처리할 수 있는 오류 처리 기술을 제공합니다.

Perl의 오류 처리

Perl의 오류 처리

프로그램의 오류를 확인하는 방법에는 여러 가지가 있습니다. 우리가 코드를 사용하고 있는 함수의 반환 코드를 검사해야 합니다. 해당 반환 코드를 적절하게 처리할 수 있다면 대부분의 오류 처리가 달성될 수 있습니다.

시스템 호출 시 무엇이 반환되나요?

시스템 호출의 경우 반환 상태는 두 개의 특수 변수 $? 그리고 $!

$! – 오류 번호 또는 오류 메시지와 관련된 오류 번호를 포착합니다.

$? – 이는 반환 상태 system() 함수를 보유합니다.

Perl 연산자 또는 논리 연산자 사용

시스템 호출을 사용하는 동안 오류 처리를 위해 논리적 or 연산자를 사용할 수 있습니다.

예 :

open(FH,"<test.txt");

파일이 존재하는 경우 읽기 모드로 파일이 열립니다.

파일이 없으면 어떻게 되나요?

open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. 
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR

펄 평가

Eval 함수는 치명적인 오류, 컴파일 시간 오류, 런타임 오류 및 특정 시점에 코드를 종료시키는 오류를 처리할 수 있습니다.

Perl Eval 함수에는 코드 블록이나 표현식이 있을 수 있습니다. Evals는 그 안에 있는 모든 것을 문자열로 간주합니다.

스크립트에 정의되지 않은 서브루틴을 호출하는 상황을 생각해 보세요. 이 상황에서 스크립트는 "정의되지 않은 서브루틴 &XYZ입니다. 이 오류는 평가 함수에서 처리될 수 있습니다."라는 내용으로 스크립트가 종료됩니다.

evals 블록의 용도는 다양합니다. 그 중 하나는 런타임에 운영 체제에 맞는 모듈을 로드하려는 경우입니다.

예: XNUMX으로 나누면 치명적인 오류가 발생합니다. 이를 처리하기 위해 코드를 evals 블록에 배치할 수 있습니다.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

출력:

C:\Users\XYZ\Text.pl 8행, ') 근처에 구문 오류가 있습니다.

{"

컴파일 오류로 인해 C:\Users\XYZ\Text.pl 실행이 중단되었습니다.

예: Perl die 문을 사용한 평가.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

출력:

적발 : 서브테스트 중 사망

Perl 사용하기

Perl은 다른 프로그래밍 언어처럼 try, catch 및 finally 코드 블록을 지원하지 않습니다. 외부 Perl 모듈을 로드하여 계속 사용할 수 있습니다.

Try::Tiny를 사용하세요.

이를 사용하여 코드를 try 블록에 배치하고 경고 블록에서 오류를 포착할 수 있습니다.

평가판에서 사용된 $@ 대신 Try::Tiny는 $_를 사용합니다.

# catch 핸들러로 오류를 처리합니다.

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

마지막으로 사용합니다.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

출력:

C:\Users\XYZ\Text.pl 라인 4의 foo.

이런 방식으로 try, catch 및 finally를 사용할 수 있습니다.

{ #문장 }을 시도해 보세요.

{#문 }을 잡아라

마지막으로 { #문장 };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

출력:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

출력:

Perl 소켓 프로그래밍

소켓이란 무엇입니까?

초보자를 위한 PERL 튜토리얼 - 전체 가이드

소켓은 네트워크 주소와 포트를 사용하여 두 컴퓨터가 네트워크에서 상호 작용할 수 있는 매체입니다.

A(서버)와 B(클라이언트)가 일부 프로그램을 실행하기 위해 소켓을 사용하여 서로 상호 작용해야 하는 두 시스템이라고 가정합니다.

이를 구현하려면 A(서버)와 B(클라이언트) 모두에 소켓을 만들어야 합니다. A는 수신 상태에 있고 B는 송신 상태에 있습니다.

A(서버):

여기서 서버는 B(클라이언트)로부터 연결을 수신하고 일부 작업을 실행하여 결과를 B(클라이언트)로 다시 보내려고 합니다. 코드를 실행하면 A의 운영 체제는 소켓을 만들고 해당 소켓에 하나의 포트를 바인딩하려고 합니다. 그런 다음 송신자 B로부터 수신 대기합니다.

B(클라이언트).

여기서 클라이언트는 자신의 시스템에서 A(서버)로 일부 프로그램을 보내 처리하고자 합니다. 코드를 실행하면 B의 운영 체제가 A(서버)와 통신하기 위한 소켓을 만들려고 시도하고, B는 B가 연결하고자 하는 A의 IP 주소와 포트 번호를 지정해야 합니다.

이것이 잘 진행되면 두 시스템 모두 상호 작용하여 하나의 포트를 통해 정보를 교환하게 됩니다. Perl은 소켓 프로그래밍도 지원합니다.

Perl에는 소켓을 구현할 수 있는 기본 API가 있습니다. 쉽게 하기 위해 소켓 프로그램을 작성하는 데 사용하는 많은 CPAN 모듈이 있습니다.

서버 작업:

  • 소켓 생성
  • 주소와 포트로 소켓 바인딩
  • 해당 포트 주소의 소켓을 듣습니다.
  • 서버의 포트와 IP를 사용하여 연결을 시도하는 클라이언트 연결을 수락합니다.
  • 작업 수행

Client Operations :

  • 소켓 생성
  • 포트 주소를 사용하여 서버에 연결
  • 작업 수행

클라이언트 서버 OperaPerl의 옵션

소켓.io

이것은 객체 지향 프로그래밍을 기반으로 하는 소켓 프로그래밍을 위한 하나의 모듈입니다. 이 모듈은 네트워크에서 사용되는 INET 네트워크 유형을 지원하지 않습니다.

IO::소켓::INET:

이 모듈은 INET 도메인을 지원하며 IO::Sockets를 기반으로 구축되었습니다. IO::Sockets에서 사용 가능한 모든 메소드는 INET 모듈에서 상속됩니다.

TCP 프로토콜을 사용하는 클라이언트 및 서버:

TCP는 연결 지향 프로토콜입니다. 우리는 소켓 프로그래밍을 위해 이 프로토콜을 사용할 것입니다.

더 진행하기 전에 IO::Socket::INET 모듈에 대한 객체를 생성하고 소켓을 생성하는 방법을 살펴보겠습니다.

$socket = IO::Socket::INET->new(PeerPort => 45787, 
PeerAddr => inet_ntoa(INADDR_BROADCAST), 
Proto => udp,LocalAddr => 
'localhost',Broadcast => 1 )
or 
die "Can't create socket and bind it : $@n";

IO::Socket::INET 모듈의 새로운 메소드는 서브루틴에 대한 입력 매개변수로 해시를 허용합니다. 이 해시는 미리 정의되어 있으므로 사용하려는 키에 값을 제공하기만 하면 됩니다. 이 해시에서 사용되는 키 목록이 있습니다.

피어 주소

원격 호스트 주소

피어호스트

PeerAddr의 동의어

피어포트

원격 포트 또는 서비스

로컬 주소

로컬 호스트 바인드 주소

로컬 호스트

LocalAddr의 동의어

로컬포트

로컬 호스트 바인드 포트

프로토

프로토콜 이름(또는 번호)

타입

소켓 유형

조각

청취 대기열 크기

재사용주소

바인딩하기 전에 SO_REUSEADDR을 설정하세요.

재사용

바인딩하기 전에 SO_REUSEADDR을 설정하세요.

재사용 포트

바인딩하기 전에 SO_REUSEPORT를 설정하세요.

방송

바인딩하기 전에 SO_BROADCAST를 설정하세요.

시간 초과

다양한 작업에 대한 시간 초과 값

멀티홈

멀티홈 호스트의 모든 주소를 사용해 보십시오.

블로킹

연결이 차단 모드인지 확인

Server.pl

use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '45655', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print "Waiting for the client to send datan"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print $_; 
} 
close($socket);

클라이언트.pl

use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '45655', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket; 
print $socket "Hello this is socket connection!n"; 
close($socket);

참고 :

소켓 프로그래밍에서는 로컬 호스트에서 실행 중인 경우 먼저 Server.pl을 실행한 다음 다른 명령 프롬프트에서 client.pl을 개별적으로 실행해야 합니다.

Perl 모듈 및 패키지란 무엇입니까?

모듈과 패키지는 서로 밀접하게 연관되어 있으며 독립적입니다. 패키지: Perl 패키지는 네임스페이스라고도 하며 해시, 배열, 스칼라 및 서브루틴과 같이 사용되는 모든 고유 변수를 가지고 있습니다. 모듈: 모듈은 서브루틴을 작성하는 재사용 가능한 코드 모음입니다. 이러한 모듈은 Perl 프로그램에 로드되어 해당 모듈에 작성된 서브루틴을 사용할 수 있습니다.

Perl 모듈이란 무엇입니까?

표준 모듈은 모든 시스템에 Perl을 설치하는 동안 설치됩니다. CPAN: 포괄적인 Perl Archive 네트워크 – Perl 모듈의 글로벌 저장소입니다. 우리가 직접 작성할 수 있는 맞춤형 Perl 모듈입니다. 기본적으로 스크립트에 로드된 모듈은 모든 전역 변수와 서브루틴을 내보냅니다. 이러한 서브루틴은 마치 스크립트 자체에 선언된 것처럼 직접 호출할 수 있습니다. Perl 모듈은 파일 이름에 .pm 확장자를 사용하여 작성할 수 있습니다(예: Foo.pm). 프로그램 시작시 'package Foo'를 이용하여 모듈을 작성할 수 있다.

기본 Perl 모듈:

#!/usr/bin/perl 
package Arithmetic; 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b);
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

출력 없음

이 Perl 모듈을 사용하려면 현재 작업 디렉토리에 배치해야 합니다.

코드의 어느 곳에서나 require 또는 use를 사용하여 Perl 모듈을 로드할 수 있습니다. 필수와 사용의 주요 차이점은 런타임 중에 로드된 모듈을 요구하고 컴파일 시간 동안 로드를 사용한다는 것입니다.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

위의 예에서는 정규화된 모듈 이름을 사용하여 서브루틴에 액세스하고 있습니다.

'use Arithmetic'을 사용하여 패키지에 액세스할 수도 있습니다.

수출 업체 :

이 모듈에는 메소드 가져오기의 기본 기능이 있습니다.

#!/usr/bin/perl 
package Arithmetic; 
require Exporter; 
@ISA= qw(Exporter); # This is basically for implementing inheritance. 
@EXPORT = qw(add); 
@EXPORT_OK = qw(subtract); 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b);
 } 
1;

@EXPORT 배열은 기본적으로 모듈 호출자에게 내보내지는 변수 및 서브루틴 목록을 전달하는 데 사용할 수 있습니다.

@EXPORT_OK 배열은 사용자가 모듈을 로드하는 동안 지정해야 하는 필요에 따라 내보낼 변수 및 서브루틴 목록을 전달하는 데 사용할 수 있습니다.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

기본적으로 add 서브루틴이 내보내집니다. 모듈을 로드하는 동안 빼기 메서드를 지정하지 않으면 내보내기가 되지 않습니다.

Perl의 객체 지향 프로그래밍

이번 섹션에서는 Perl 객체 지향 모듈을 생성하는 방법을 배웁니다. 먼저, 대상이 무엇인지 볼까요? 객체는 Perl 모듈의 일부 데이터에 액세스하고, 수정하고, 찾을 수 있는 인스턴스입니다. 이는 기존 Perl 패키지, 변수 및 서브루틴을 다른 프로그래밍 언어를 참조하여 클래스, 개체 및 메서드처럼 작동하도록 만드는 것입니다.

수업 만들기

우리는 이전 주제에서 모듈을 만드는 방법을 이미 알고 있습니다. 클래스의 목적은 메소드와 변수를 저장하는 것입니다. Perl 모듈에는 메소드인 서브루틴이 있습니다. 우리는 이러한 변수와 서브루틴 개체에 액세스해야 합니다.

펄 생성자

Perl의 생성자는 참조에 태그된 모듈 이름이 있는 참조를 실행하고 반환하는 메서드입니다. 이것을 수업 축복이라고 합니다. 우리는 perl 클래스를 축복하기 위해 특정 변수를 사용하는데, 이는 bless입니다.

#!/usr/bin/perl 
package Arithmetic; 
sub new 
{ 
my $class=shift;
my $self={}; 
bless $self, $class; 
return $self; 
} 
sub add 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
}
sub subtract 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

클래스의 생성자로 사용되는 새 메소드인 이 생성자는 객체를 생성하고 이 생성자를 호출하는 스크립트로 반환됩니다.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

여기서는 객체가 어떻게 생성되었는지 이해해야 합니다. 클래스에 대한 객체를 생성하려고 할 때마다 클래스의 전체 이름을 사용해야 합니다. Perl 클래스가 lib\Math\Arithmetic.pm에 있다고 가정해 보겠습니다. 그리고 lib 디렉토리에서 이 perl 클래스에 액세스하려면 스크립트를 호출하는 동안 클래스에 대한 전체 경로를 제공해야 합니다.

lib::Math::Arithmetic을 사용하세요.

my $obj = lib::Math::Arithmetic->new();

이것이 Perl에서 객체 생성이 일어나는 방식입니다.

@INC:

Perl 스크립트는 라이브러리 모듈이 어디에 있는지 어떻게 알 수 있나요? Perl은 스크립트의 현재 디렉토리와 Perl 내장 라이브러리 경로만 알고 있습니다. 현재 디렉터리나 Perl 라이브러리 경로에 없는 Perl 모듈을 사용할 때마다 스크립트는 항상 실패합니다. @INC에 대해 이것은 Perl 모듈을 찾아야 하는 모든 디렉토리 경로를 보유하는 배열입니다. 이 명령을 실행하고 결과가 어떻게 나오는지 확인하십시오.

perl –e "print @INC"

그러면 일부 출력이 제공되며 이것이 lib 모듈을 사용할 수 있는 경로입니다. 새로운 라이브러리 모듈을 사용할 때마다 Perl 모듈을 사용할 수 있는 특정 위치를 조사하도록 인터프리터인 Perl에게 지시해야 합니다.

push(@INC, "PATH TO YOUR MODULE");

이것을 첫 번째 코드 줄로 만드세요. 그러면 통역사에게 해당 경로를 조사하라고 지시합니다. 또는 사용

lib Arithmetic; # List here is your Perl Module location

펄 소멸자

개체의 소멸자는 기본적으로 끝 부분과 스크립트가 종료되기 전에 호출됩니다. 이는 메모리에서 개체를 파괴하는 데 사용됩니다.


PERL V/s 쉘 스크립팅

PERL 프로그래밍 소개

  • Perl 프로그래밍은 쉘 스크립팅에서 다른 쉘을 사용할 때 흔히 발생하는 이식성 문제를 일으키지 않습니다.
  • Perl에서는 오류 처리가 매우 쉽습니다.
  • Perl은 방대하기 때문에 길고 복잡한 프로그램을 쉽게 작성할 수 있습니다. 이는 네임스페이스, 모듈, 객체, 상속 등을 지원하지 않는 Shell과 대조적입니다.
  • Shell에는 재사용 가능한 라이브러리가 더 적습니다. Perl의 CPAN과 비교하면 아무것도 아닙니다.
  • 쉘은 덜 안전합니다. 외부 함수를 호출합니다(mv, cp 등과 같은 명령은 사용되는 쉘에 따라 다름). 반대로 Perl은 내부 기능을 사용하는 동안 유용한 작업을 수행합니다.

PERL이 자동화 테스트에 사용되는 방법

Perl은 자동화에 널리 사용됩니다. 세계 최고의 프로그래밍 언어는 아닐 수도 있지만 특정 유형의 작업에 가장 적합합니다. Perl이 어디에 사용되는지, 왜 사용되는지 논의해 봅시다. 자동화 테스트.

스토리지 테스트

Perl을 사용한 스토리지 테스트

스토리지란 무엇입니까? 파일에 저장된 데이터.

스토리지와 관련된 테스트 케이스 하나의 파티션에 데이터를 써야 하는 경우 이를 읽고 데이터가 올바르게 기록되었는지 확인합니다.

수동으로 수행할 수도 있지만 수동 테스터가 동일한 작업을 10000회 수행할 수 있습니까? 악몽이 될 거예요! 자동화가 필요하다

저장과 관련된 모든 것을 자동화하는 데 가장 좋은 도구는 파일 처리 기술 덕분에 Perl입니다. 정규식 다른 프로그래밍 언어에 비해 실행 시간이 가장 적게 소요되는 강력한 파일 구문 분석.

스토리지를 테스트해야 하는 이유는 무엇입니까? 데이터가 한 시스템에서 다른 시스템으로 끊임없이 흐르고 초당 수천 개의 레코드가 저장되는 대규모 데이터 센터를 생각해 보세요. 이러한 저장 메커니즘의 견고성을 테스트하는 것이 필수적입니다.

HP, Dell 등 많은 회사에서 IBM 많은 서버 제조업체에서는 스토리지 및 네트워킹 도메인의 기능을 테스트하기 위한 인터페이스로 Perl을 사용합니다. NetApp은 스토리지 작업을 완벽하게 수행하고 Perl을 프로그래밍 언어로 사용하여 테스트 사례를 자동화하는 회사 중 하나입니다.

Perl Automation에 관심이 있다면 Storage & Networking에 대해 배우는 것이 좋습니다. Concepts.

서버 및 네트워크 테스트:

Perl을 사용한 서버 및 네트워크 테스트

Perl을 사용한 서버 및 네트워크 테스트

PERL은 서버 가동 시간 및 성능 모니터링에 널리 사용됩니다.

100개의 호스트(서버)가 있는 데이터 센터를 생각해 보십시오. 각 호스트에 연결하고 일부 명령을 원격으로 실행해야 합니다. 또한 시스템을 재부팅하고 언제 다시 온라인 상태가 되는지 확인하고 싶습니다.

100개의 호스트 모두에 대해 이 작업을 수동으로 수행하는 것은 악몽이 될 것입니다. 하지만 PERL을 사용하면 이를 쉽게 자동화할 수 있습니다.

PERL을 사용하여 위의 자동화를 달성하기 위한 설계 단계

  1. (IP, 사용자 이름 및 비밀번호)와 같은 호스트 정보에 대한 입력을 파일에서 가져옵니다.
  2. Net::SSH2를 사용하여 각 시스템에 연결하고 명령을 실행하기 위한 채널을 설정합니다.
  3. ls, dir, ifconfig,ps 등 필요한 명령 세트를 실행합니다.
  4. 시스템을 재부팅합니다.
  5. 시스템이 나타날 때까지 10분 정도 기다립니다.
  6. Net::Ping 모듈을 사용하여 시스템을 ping하고 상태를 인쇄합니다.

위의 시나리오를 코딩하겠습니다.

연결하고 명령을 실행해야 하는 모든 호스트에 대한 전체 정보를 저장하는 Input.txt라는 파일을 사용하겠습니다.

입력.txt

192.168.1.2 루트 비밀번호

192.168.1.3 루트 비밀번호

192.168.1.4 루트 root123

HostCheck.pl

use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new();    # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new();  #Creating object for Net::SSH2
open( FH, "Input.txt" );        # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
    if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ )    #Regex to get each info from file
    {
        $ip = $1;
        my $user = $2;
        my $password = $3;
        $SSHObj->connect($ip);
        print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
        my $status = $SSHObj->auth_password( $user, $password );
        print "$status\n";
        die("unable to establish connection to -- $ip") unless ($status);
        my $shell = $SSHObj->channel();
        print "$_\n" while <$shell>;
        $shell->blocking(1);
        $shell->pty('tty');
        $shell->shell();
        sleep(5);
        #Executing the list of command on particular host. Can be any command
        print $shell "ls \n";
        print "$_\n" while <$shell>;
        print $shell "ps \n";
        print "$_\n" while <$shell>;
        print $shell "dir \n";
        print "$_\n" while <$shell>;
        print $shell "init 6\n";    #rebooting the system
        push( @ips, $ip );
    }
}
sleep 600;
foreach (@ips)
{
    if ( $ping->ping($_) )
    {
        print "$_ is alive.\n" if $ping->ping($_);
    }
    else
    {
        print "$_ is not still up --waiting for it to come up\n";
    }
}

웹 테스팅

Perl은 스토리지 및 네트워크 테스트에만 국한되지 않습니다. PERL을 사용하여 웹 기반 테스트를 수행할 수도 있습니다. WWW-기계화 다음 용도로 사용되는 하나의 모듈입니다. 웹 테스트. 기본적으로 웹 애플리케이션의 기능을 테스트하기 위해 브라우저를 실행하지 않고 HTML 페이지의 소스 코드를 사용합니다.

다음을 사용하여 브라우저 기반 테스트를 수행할 수도 있습니다. Selenium IDE, RC, 웹 드라이버. Perl은 다음에 대해 지원됩니다. Selenium.

\N"; #이것은 패턴 일치가 완료된 후 남은 문자열을 유지합니다.
“를 인쇄하다