문제

Perl용 대화형 콘솔을 시작하려면 어떻게 해야 합니까? irb Ruby에 대한 명령 또는 python 파이썬?

도움이 되었습니까?

해결책

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

perl -de1

대안으로는 알렉시스 수크리에님의 Perl 콘솔 응용 프로그램이 있지만 사용하지 않았습니다.

다른 팁

Matt Trout는 REPL에 관한 기사를 썼을 뿐만 아니라 실제로 다음과 같은 기사를 썼습니다. 개발::REPL

조금 사용해본 결과 꽤 잘 작동하고 활발하게 개발 중입니다.

그런데, 왜 누군가 콘솔에서 "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> 

나는 당신이 Perl에 대한 REPL(Read, Evaluate, Print, Loop) 인터페이스에 대해 질문하고 있다고 생각합니다.이를 수행하는 몇 가지 방법이 있습니다:

  • 맷 트라우트는 기사 작성하는 방법을 설명하는 것입니다.
  • 아드리아노 페레이라 몇 가지 옵션을 설명했습니다
  • 마지막으로 irc.perl.org의 IRC에 접속하여 많은 인기 채널에서 평가 봇 중 하나를 시험해 볼 수 있습니다.그들은 당신이 전달한 Perl 덩어리를 평가할 것입니다.

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

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

그러면 내 세게 때리다 이전 명령을 다시 가져오는 기록입니다.그러나 이는 상태를 보존하지 않습니다.

이 양식은 "사소한 것"(예: Perl 질문에 답할 때)을 테스트하려는 경우에 가장 유용합니다.종종 이러한 명령이 쉘 스크립트나 makefile에 그대로 스크랩되는 것을 발견합니다.

Python처럼 내장된 Perl용 대화형 콘솔은 없습니다.그러나 Perl 디버거를 사용하여 디버깅 관련 작업을 수행할 수 있습니다.-d 옵션을 사용하여 활성화할 수 있지만 이에 대해 알아보려면 'man perldebug'를 확인하는 것이 좋습니다.

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

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

언제든지 내장된 디버거에 접속하여 거기에서 명령을 실행할 수 있습니다.

   perl -d -e 1

널리 사용되는 Perl REPL에는 두 가지가 있습니다.
1. 개발::REPL 중대하다.
2.하지만 IMO 회신하다 더 나은.

내가 만들었어요 perli, ㅏ 펄 REPL 계속되는 리눅스, 맥OS, 윈도우.

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

효과가있다 독립형 (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

나는 항상 그랬다:

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

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

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

읽기-평가-인쇄 루프:

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

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

또한 다음과 같은 몇 가지 옵션이 있습니다. 펄 쉘.

자세한 내용은 다음을 참조하세요. 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 지원을 제공하는 , 간단한 Perl 명령과 결합하여 사용 가능한 REPL을 생성할 수 있습니다., 따라서 타사 REPL 솔루션 없이도 가능합니다.
    • OSX에서는 설치할 수 있습니다 rlwrap ~을 통해 홈브류 ~와 함께 brew install rlwrap.
    • Linux 배포판은 다음을 제공해야 합니다. rlwrap 해당 패키지 관리자를 통해;예를 들어 Ubuntu에서는 다음을 사용합니다. sudo apt-get install rlwrap.
    • 보다 Ján Sáreník의 답변 상기 조합에 대해 rlwrap 그리고 Perl 명령.

당신이 얻지 못하는 것 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 지원 및 어휘 지속성을 포함하는 최소한의 순수 Perl 솔루션입니다.

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

Sepia와 PDE에는 자체 REPL(GNU Emacs용)도 있습니다.

세련된 REPL(GNU Emacs용)도 참조하세요. http://blog.jrock.us/articles/Stylish%20REPL.pod

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top