Programing

Perl 용 대화식 콘솔을 시작하려면 어떻게해야합니까?

lottogame 2020. 4. 4. 10:09
반응형

Perl 용 대화식 콘솔을 시작하려면 어떻게해야합니까?


irbRuby 또는 pythonPython 명령 과 유사한 Perl 용 대화식 콘솔을 시작하려면 어떻게 해야합니까?


다음과 같이 간단한 프로그램에서 perl 디버거를 사용할 수 있습니다.

perl -de1

또는 Alexis Sukrieh 의 Perl Console 응용 프로그램이 있지만 사용하지 않았습니다.


Matt Trout은 REPL에 관한 기사를 썼을뿐만 아니라 실제로는 한 권을 썼습니다 -Devel :: REPL

나는 그것을 조금 사용했고 꽤 잘 작동하며 활발한 개발 중입니다.

BTW, 나는 왜 누군가 콘솔에서 "perl -e"를 사용한다고 언급 한 사람을 수정했는지 모른다. 이것은 실제로는 REPL이 아니지만 환상적으로 유용하며 항상 사용합니다.


"psh"라고하는 스크립트를 작성했습니다.

#! /usr/bin/perl

while (<>) {
  chomp;
  my $result = eval;
  print "$_ = $result\n";
}

입력 한 내용이 무엇이든 Perl로 평가됩니다.

> gmtime(2**30)
gmtime(2**30) = Sat Jan 10 13:37:04 2004

> $x = 'foo'
$x = 'foo' = foo

> $x =~ s/o/a/g
$x =~ s/o/a/g = 2

> $x
$x = faa

히스토리를 원하면 rlwrap을 사용 하십시오 . 이것은 당신이 될 수있는 ~/bin/ips예를 들어 :

#!/bin/sh
echo 'This is Interactive Perl shell'
rlwrap -A -pgreen -S"perl> " perl -wnE'say eval()//$@'

그리고 이것은 다음과 같이 보입니다 :

$ ips
This is Interactive Perl shell
perl> 2**128
3.40282366920938e+38
perl> 

펄에 대한 REPL (읽기, 평가, 인쇄, 루프) 인터페이스에 대해 묻는 것 같습니다. 이를 수행하는 몇 가지 방법이 있습니다.

  • Matt Trout에는 을 쓰는 방법을 설명하는 기사 가 있습니다.
  • Adriano Ferreira 가 몇 가지 옵션을 설명했습니다
  • 마지막으로 irc.perl.org에서 IRC를 타고 많은 인기 채널에서 평가판 봇 중 하나를 시험해 볼 수 있습니다. 그들은 당신이 그들에게 전달하는 펄 덩어리를 평가합니다.

명령 줄을 콘솔로 사용합니다.

$ perl -e 'print "JAPH\n"'

그런 다음 bash 기록을 사용 하여 이전 명령을 다시 가져올 수 있습니다 . 그러나 이것은 상태를 보존하지 않습니다.

이 양식은 "하나의 작은 것"을 테스트 할 때 가장 유용합니다 (Perl 질문에 대답 할 때와 같이). 종종 이러한 명령이 셸 스크립트 또는 makefile에 그대로 스크랩됩니다.


Python처럼 내장 된 Perl 용 대화식 콘솔은 없습니다. 그러나 Perl Debugger를 사용하여 디버깅 관련 작업을 수행 할 수 있습니다. -d 옵션을 사용하여 켤 수 있지만 'man perldebug'를 확인하여 배울 수 있습니다.

약간의 인터넷 검색 후에는 Perl 콘솔을 구현하는 별도의 프로젝트가 있습니다. http://www.sukria.net/perlconsole.html .

도움이 되었기를 바랍니다!


항상 내장 디버거에 넣고 명령을 실행할 수 있습니다.

   perl -d -e 1

인기있는 Perl REPL이 두 가지 있습니다.

  1. Devel :: REPL 은 훌륭합니다.
  2. 그러나 IMO 회신 이 더 좋습니다.

Linux, macOS 및 Windows에서 실행 perli되는 Perl REPL만들었습니다 .

자동 결과 인쇄, 편리한 문서 조회 및 정규식 일치에 대한 쉬운 검사에 중점을 둡니다. 여기에서
스크린 샷을 볼 수 있습니다 .

독립 실행 형으로 작동 하지만 (Perl 이외의 종속성은 없지만) 명령 줄 편집, 영구 명령 기록 및 탭 완성을 지원하려면 설치를 rlwrap적극 권장 합니다 .

설치

  • Node.js를 설치 한 경우 :

    npm install -g perli
    
  • 그렇지 않으면:

    • 유닉스 계열 플랫폼 : 이 스크립트perli시스템 경로의 폴더 다운로드 하고로 실행 가능하게하십시오 chmod +x.

    • 윈도우 : 다운로드 이 스크립트perli.pl(참고 .pl시스템의 경로에 폴더 확장).
      Perli를로 호출하지 않아도되면 perli.pl모든 준비가 완료된 것입니다.
      그렇지 않으면 perli.cmd다음 내용으로 동일한 폴더에 이름이 지정된 배치 파일을 작성하십시오 . @%~dpn.pl %*; 이것은 단지 호출을 가능하게 perli합니다.


perl -d 당신의 친구입니다:

% perl -de 0

Devel :: REPL에서 re.pl


나는 항상했다 :

rlwrap perl -wlne'eval;print$@if$@'

5.10에서는 다음으로 전환했습니다.

rlwrap perl -wnE'say eval()//$@'

(rlwrap은 선택 사항입니다)


읽기 평가 인쇄 루프 :

$ perl -e'while(<>){print eval,"\n"}'

Perl에는 콘솔이 없지만 디버거를 콘솔로 사용할 수 있습니다. 명령 프롬프트에서을 입력하십시오 perl -de 1. 값 "1"은 중요하지 않으며 아무 것도하지 않는 유효한 명령문 일뿐입니다.

Perl 쉘 에는 몇 가지 옵션이 있습니다 .

자세한 정보는 perlfaq3을 읽으 십시오 .


여기서 psh를 살펴볼 수 있습니다 : http://gnp.github.io/psh/

쉘에 가득 차 있지만 (예를 들어 bash 대신 사용할 수 있음) perl 구문을 사용합니다. 따라서 즉시 메소드를 작성할 수 있습니다.


데비안 / 우분투에서 :

$ sudo apt-get install libdevel-repl-perl
$ re.pl

$ sudo apt-get install libapp-repl-perl
$ iperl

업데이트 : 이후 다운로드 가능한 REPL을 만들었습니다 . 다른 답변을 참조하십시오 .

후시의 이점으로 :

  • 타사 솔루션을 기존의 답변 중 언급 중 하나입니다 설치하는 성가신 및 / 또는 비 사소한 아닌 명백한 추가 단계없이 일을하지 않습니다 - 일부 솔루션 것으로 보인다 적어도 반 포기했다.
  • 사용 가능한 REPL에는 명령 줄 편집 키보드 지원 및 기록 지원을위한 readline 라이브러리가 필요합니다. 이는 많은 타사 솔루션에서 문제가되는 부분입니다.
  • CLI를 설치 rlwrap하여 명령에 대한 readline 지원을 제공하는 경우 CLI를 간단한 Perl 명령과 결합하여 사용 가능한 REPL을 작성하여 써드 파티 REPL 솔루션없이 수행 할 수 있습니다.
    • OSX 에서을 사용 rlwrap하여 Homebrew통해 설치할 수 있습니다 brew install rlwrap.
    • Linux 배포판은 rlwrap해당 패키지 관리자를 통해 제공해야합니다 . 예를 들어 우분투에서는을 사용하십시오 sudo apt-get install rlwrap.
    • 상기의 조합 과 Perl 명령에 대해서는 Ján Sáreník의 답변참조하십시오 rlwrap.

Ján의 답변으로 얻을 수없는 것 :

  • 자동 완성
  • 여러 줄로 된 문장을 입력하는 기능

이러한 기능을 제공하는 유일한 타사 솔루션 (사소한 설치 + 추가의 명백한 단계 포함)은 psh 이지만 다음과 같습니다.

  • 약 2.5 년 동안 활동을 보지 못했습니다.

  • 초점은 본격적인 될 것을 목표로 점에서 다른 쉘 교체 , 따라서이 자동으로 명령을 평가하지 않는다는 것을 의미 전통적인 쉘처럼 작동 문을, 그리고 같은 명시 적으로 출력 명령을 필요 print로 식의 결과를 인쇄합니다.


Ján Sáreník의 답변 은 한 가지 방법으로 향상 될 수 있습니다.

  • 기본적으로 배열 / 목록 / 해시 테이블을 스칼라로 인쇄합니다. 즉, 요소 수 만 인쇄 하지만 대신 요소를 열거하는 것이 편리합니다.

일회성 작업으로 Data::Printer모듈 을 설치하면 함수[sudo] cpan Data::Printer 를 사용하기 위해 REPL에 모듈을 로드 할 수 있습니다.이 기능 을 사용 p()하면 열거를 위해 목록 / 배열 / 해시 테이블을 전달할 수 있습니다.

여기의 이름이 별명 iperl의 readline와 함께 Data::Printer지원 당신이 넣을 수 있습니다, 당신의 POSIX와 같은 쉘의 초기화 파일 (예 : ~/.bashrc) :

alias iperl='rlwrap -A -S "iperl> " perl -MData::Printer -wnE '\''BEGIN { say "# Use `p @<arrayOrList>` or `p %<hashTable>` to print arrays/lists/hashtables; e.g.: `p %ENV`"; } say eval()//$@'\'

예를 들어, 해시 테이블을 통해 모든 환경 변수를 인쇄하려면 다음을 수행하십시오 %ENV.

$ iperl        # start the REPL
iperl> p %ENV  # print key-value pairs in hashtable %ENV

Ján의 대답과 마찬가지로 표현식 스칼라 결과는 자동으로 인쇄됩니다. 예 :

iperl> 22 / 7  # automatically print scalar result of expression: 3.14285714285714

매트 송어의 개요 목록 오 개에서 선택, perl -de 0이후, 그는 권장 Reply플러그인을 통해 확장 성이 중요한 경우, 또는, tinyrepl에서 Eval::WithLexicals의 readline 지원 및 어휘 지속성을 포함하는 최소한의, 순수 펄 솔루션.


CPAN에서 ptkdb도 찾으십시오. http://search.cpan.org/search?query=ptkdb&mode=all


세피아와 PDE에는 자체 REPL이 있습니다 (GNU Emacs 용).


스타일리쉬 REPL (GNU Emacs 용) http://blog.jrock.us/articles/Stylish%20REPL.pod 참조

참고 URL : https://stackoverflow.com/questions/73667/how-can-i-start-an-interactive-console-for-perl

반응형