To jest polecenie perldlp, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
perldl — Prosta powłoka dla PDL (zobacz także pdl2)
STRESZCZENIE
Używaj PDL interaktywnie:
bash $ perldl
pdl> $a = sekwencja(10) # lub dowolne inne polecenie Perl lub PDL
bash $ pdl
pdl> print "Witaj, świecie!\n";
Uruchom skrypt:
bash$ kot > pdlscript
#!/usr/bin/pdl
print "Witaj, świecie!\n";
...
OPIS
Program perdl to prosta powłoka (napisana w języku Perl) do interaktywnego wykorzystania języka PDL. To
składa się z interfejsu wiersza poleceń, który obsługuje natychmiastową interpretację języka Perl
polecenia i wyrażenia. Można wprowadzać wyrażenia Perla, w tym konstrukcje PDL
bezpośrednio na klawiaturze i są natychmiast kompilowane i wykonywane. Składnia nie
dokładnie identyczny z Perlem, pod tym względem, że w większości przypadków zakończenie linii powoduje natychmiastowe działanie
wykonanie dotychczas wprowadzonego polecenia (nie jest wymagane końcowe „;”).
Synonim Pan to skompilowany plik wykonywalny, który jest przydatny jako interpreter skryptów w systemie UNIX
składnia shebang („#!”). Jest to przydatne do generowania i ponownego wykonywania dziennika poleceń
plików z perdl.
Kurs perdl Shell uruchamia początkowy plik startowy („~/.perldlrc"), które można wykorzystać do wstępnego załadowania
modułów perla lub skonfiguruj globalne środowisko perla. Zawiera mechanizm ścieżki dla
automatyczne ładowanie podprogramów Perla. Istnieje mechanizm historii poleceń i kilka innych
przydatne funkcje, takie jak wstępne przetwarzanie poleceń, skróty do często używanych poleceń, np
jako „drukowanie” oraz możliwość wykonania dowolnego kodu po wydrukowaniu monitu.
W zależności od ustawień konfiguracyjnych, perdl można ustawić tak, aby honorował lub ignorował ^D
(końca pliku) podczas wysyłania z terminala lub w celu podjęcia próby zrobienia tego, co właściwe
gdy napotkana zostanie konstrukcja blokowa obejmująca wiele linii.
perdl i Pan obsługuje kilka opcji wiersza poleceń, które zostały omówione pod koniec
ten dokument.
Numer Referencyjny podręcznik & Online pomoc
Podręcznik referencyjny PDL i pomoc online są dostępne od wewnątrz perdlStosując pomoc
i a propos polecenia (które mogą być również skracane ? i ??.) pomoc samo polecenie
drukuje podsumowanie składni pomocy i pomoc wydrukuje dokumentację POD z
moduł, o którym wspomniałeś (POD to format Perla służący do osadzania dokumentacji w pliku Perl
kod; szczegóły znajdziesz w perlpod).
Jeśli dołączysz dokumentację POD do podprogramów automatycznego ładowania (patrz ścieżka mechanizm poniżej),
wtedy oba pomoc i a propos znajdzie go i będzie mógł go sformatować i wyświetlić na żądanie.
Historia mechanizm
Jeśli masz zainstalowane moduły Perla ReadLines i ReadKeys, to perdl obsługuje a
mechanizm edycji historii i linii przy użyciu klawiszy edycyjnych podobnych do emacsa. Ostatnie 500
polecenia są zawsze przechowywane w pliku .perldl_hist w twoim katalogu domowym pomiędzy
sesje. Ustaw $PERLDL::HISTFILESIZE, aby zmienić liczbę zapisywanych linii. Polecenie „l
[liczba]” pokazuje ostatnio wpisane polecenia „liczba”, gdzie „liczba” domyślnie wynosi 20.
na przykład:
bash $ perldl
Włączono funkcję ReadLines
pdl> $a = rfits "foo.fits"
BITPIX = -32 rozmiar = 88504 pikseli
Odczyt 354016 bajtów
BSKALA = && BZERO =
pdl> dziennik obrazu ($a+400)
Wyświetlanie obrazu 299 x 296 od 4.6939525604248 do 9.67116928100586 ...
Command egzekucja
Jeśli wpiszesz proste polecenie w perdl wiersza poleceń, jest on natychmiast wykonywany w pliku a
Perla „eval()”. Środowisko jest prawie identyczne z tym w skrypcie Perla, z
kilka ważnych wyjątków:
· $_ nie jest zachowywany w poprzek linii
$_ służy do przechowywania wiersza poleceń do wstępnego przetwarzania, więc na początku
przetwarzania każdego wiersza poleceń, $_ zawiera samo polecenie. Użyj innych zmiennych
niż $_ do przechowywania wartości w wierszach.
· Zakres nie jest zachowywany w poprzek linii
Każda linia poleceń jest wykonywana w oddzielnym bloku „eval” w Perlu, czyli określaniu zakresu
polecenia takie jak „my” i „local” mogą nie działać dokładnie zgodnie z oczekiwaniami — w szczególności
jeśli zadeklarujesz zmienną za pomocą „my”, będzie ona lokalna dla konkretnego wiersza poleceń
w którym wpisałeś polecenie „my”, co oznacza, że wyparuje przed następnym
zostanie wydrukowany monit. (Możesz używać zmiennych „moich” w bloku wielowierszowym lub izolować
wartości w jednym wierszu poleceń, oczywiście).
UWAGA: pdl2 zachowuje zakres leksykalny pomiędzy wierszami.
· Wykonanie jest natychmiastowe
W większości przypadków zaraz po zakończeniu linii wejściowej jest ona analizowana i
wykonany. Przerywa to normalną zależność Perla od średników jako ograniczników poleceń.
Na przykład wyrażenie dwuwierszowe
wydrukuj „Witam”,
"świat";
wypisuje frazę „Hello world” w Perlu, ale (w większości przypadków) „Hello” w
perdl.
· Wykonanie wieloliniowe
W trybie wielowierszowym (który jest domyślnie włączony, patrz Powłoka zmienne, poniżej), perdl
wyszukuje konstrukcje blokowe z nawiasami klamrowymi, nawiasami, cudzysłowami,
i powiązane ograniczniki. Jeśli pozostawisz taką konstrukcję otwartą, perdl akceptuje więcej linii
wejścia, dopóki nie zamkniesz konstrukcji lub nie zakończysz wyrażenia wieloliniowego za pomocą
^D. Zgodnie z powyższym przykładem, fraza
{ wydrukuj „Witam”,
"świat"; }
wypisze „Hello world” z Perla lub (w trybie wielowierszowym) perdl.
Ostrzeżenie: Analiza wieloliniowa wykorzystuje moduł Text::Balanced Damiana Conwaya, który
zawiera pewne wady - więc może zostać oszukany przez operatory przypominające cudzysłów, takie jak „q/.../”,
zawiera dokumentację POD, wieloliniowe cudzysłowy „<<” i kilka szczególnie dziwacznych, ale-
prawidłowe dopasowania „m/.../” i podstawienia „s/.../.../”. W takich przypadkach użyj ^D, aby zamknąć
usuń konstrukcję wieloliniową i wymuś kompilację i wykonanie.
Jeśli chcesz zachować to zachowanie w skrypcie (na przykład w celu odtworzenia dziennika poleceń
plik; zobacz poniżej, jak go utworzyć), możesz użyć Pan zamiast Perl jako tłumacz
w początkowej linijce scenariusza.
Kończenie „perld”
Sesję „perldl” można zakończyć za pomocą dowolnego polecenia „quit”, „exit” lub
skróty „x” lub „q”. Jeśli obsługa EOF jest włączona (domyślnie), możesz także wpisać ^D
w wierszu polecenia.
Jeśli wejście polecenia NIE jest terminalem (na przykład, jeśli uruchamiasz z polecenia Command
dziennik), wówczas EOF zawsze się zakończy perdl.
Kończenie Polecenia (Ctrl-C obsługiwanie)
Polecenia wykonywane w „perldl” można zakończyć przedwcześnie za pomocą „Ctrl-C” (lub
niezależnie od tego, która sekwencja klawiszy wysyła sygnał INT do procesu na twoim terminalu). Pod warunkiem, że Twoje
Kod PDL nie ignoruje znaków „sigint”, co powinno rzucić cię z powrotem do polecenia „perldl”.
skłonić:
pdl> $wynik = start_lengthy_computation()
Wykryto Ctrl-C
pdl>
Skróty i aliasy
· Powłoka aliasuje „p”, co stanowi wygodną, krótką formę „drukowania”, np
pdl> p te 5,3
[
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
]
· „q” i „x” to skróty oznaczające „zakończ”.
· „l” wyświetla bufor historii
pdl> l # lista ostatnich 20 poleceń
pdl> l 40 # lista ostatnich 40 poleceń
· „?” to pseudonim pomocy
pdl>? pdl2 # uzyskaj pomoc dotyczącą nowej powłoki pdl2
· „?” jest aliasem dla apropos
pdl> ?? PDL::Doktor
· pomoc, apropos, użycie i sig: wszystkie słowa po tych poleceniach są używane dosłownie i nie
oceniane przez Perla. Możesz więc napisać np.
pdl> pomóż, pomóż
zamiast
pdl> pomoc „pomoc”
Wiersz poleceń Opcje
perdl i Pan obsługuje kilka opcji wiersza poleceń w celu dostosowania zachowania sesji.
Większość z nich jest odpowiednikiem poleceń, które można wprowadzić w pdl> podpowiedź. Oni są:
-nadmiar
Załaduj OpenGL podczas uruchamiania powłoki (moduł Perl OpenGL, który jest dostępny pod adresem
CPAN musi być zainstalowany). Umożliwia to przetwarzanie pętli zdarzeń readline. Nie używaj z
-tk.
-tk Załaduj Tk podczas uruchamiania powłoki (moduł Perl Tk, który jest dostępny w CPAN, musi
zostać zainstalowany). Umożliwia to przetwarzanie pętli zdarzeń readline. Nie używaj z -glut.
-f plik
Ładuje plik przed przetworzeniem danych wejściowych użytkownika. Wszelkie błędy podczas wykonywania
plik jest fatalny.
-w Uruchamia z włączonymi komunikatami ostrzegawczymi (tj. zwykłymi ostrzeżeniami "-w" Perla).
-M moduł
Ładuje moduł przed przetworzeniem danych wejściowych użytkownika. Porównaj odpowiedni „perl”
przełącznik.
-m moduł
Zwalnia moduł przed przetworzeniem danych wejściowych użytkownika.
-I katalog
Dodaje katalog do ścieżki dołączania. (tj. tablica @INC) Porównaj odpowiedni „perl”
przełącznik.
-V Drukuje podsumowanie konfiguracji PDL. Informacje te powinny być dołączone do każdego błędu PDL
raport. Porównaj odpowiedni przełącznik „perl”.
Kurs startup filet ~/.perldlrc
Jeśli plik ~/.perldlrc zostanie znalezione, że jest pobierane podczas uruchamiania w celu załadowania domyślnych modułów, ustaw
zmienne powłoki itp. Jeśli NIE zostanie znaleziony plik dystrybucyjny PDL/default.perldlrc is
zamiast tego przeczytaj. Spowoduje to załadowanie różnych modułów domyślnie uznawanych za przydatne i które zapewniają
kompatybilność z wersją 1.11. Jeśli Ci się to nie podoba i chcesz bardziej usprawnionego zestawu
własne ulubione moduły, po prostu twórz własne ~/.perldlrc. Możesz zacząć od
Przede wszystkim system został opracowany PDL/default.perldlrc jako szablon, ponieważ nie będzie on dostępny po wymianie
to z własną wersją.
Aby ustawić jeszcze więcej lokalnych ustawień domyślnych, plik lokalny.perldlrc (w bieżącym katalogu) jest
źródła, jeśli zostało znalezione. Dzięki temu możesz ładować moduły i definiować podprogramy dla projektu w pliku
bieżący katalog.
Nazwa została wybrana specjalnie, ponieważ stwierdzono, że ukryte pliki NIE były w nich potrzebne
okoliczności.
Plik startowy powinien zwykle zawierać „użyj PDL::AutoLoader;”, jak wiele ładniejszych
funkcje interaktywne nie będą bez niego działać.
Powłoka zmienne
Zmienne powłoki: (Note: jeśli nie podobają Ci się ustawienia domyślne, zmień je ~/.perldlrc)
· $PERLDL::ESCAPE - wartość domyślna '#'
Każda linia zaczynająca się od tego znaku jest traktowana jako ucieczka powłoki. Wartość domyślna
jest wybierany, ponieważ wymyka się kodowi ze standardowego interpretera Perla.
· $PERLDL::HISTFILESIZE - wartość domyślna 500
Jest to liczba wierszy historii poleceń powłoki Perldl, które należy zachować.
· $PERLDL::PAGER - wartość domyślna "więcej"
Zewnętrzny program do filtrowania wyników poleceń. Użycie „więcej” powoduje wydrukowanie pierwszego
ekran na raz. W systemie Unix ustawienie strona(1) i $PERLDL::PAGER na „tee -a plik wyjściowy”
będzie przechowywać zapis danych wyjściowych generowanych przez kolejne polecenia Perldl (bez
stronicowanie).
· $PERLDL::PROMPT - wartość domyślna 'pdl> '
Dość powiedziane. Ale można go także ustawić na odniesienie do podprogramu, np. $PERLDL::PROMPT =
sub {join(':',(gmtime)[2,1,0]).'> '} umieszcza bieżący czas w znaku zachęty.
· $PERLDL::MULTI - wartość domyślna 1
Jeśli jest ustawiona na wartość true, perldl będzie analizował wieloliniowe bloki Perla: your
wejście nie zostanie wykonane, dopóki nie zakończysz linii bez zaległych operatorów grupowych
(takie jak cudzysłowy, bloki, nawiasy lub nawiasy klamrowe) są nadal aktywne. Linie kontynuacyjne
mieć inny monit, który pokazuje, które ograniczniki są nadal aktywne.
Zauważ, że nie jest to (jeszcze!) kompletny parser Perla. W szczególności Text::Balanced
wydaje się być w stanie zignorować operatory cytowania, takie jak „q/... /” w wierszu, ale tak nie jest
aby móc je rozciągać wzdłuż linii. Podobnie nie ma obsługi znaku „<<”
operator.
Dobrze obsługiwane są konwencjonalne ciągi wielowierszowe oraz grupowania {}, [] i ().
· $PERLDL::NO_EOF - wartość domyślna 0 / 1 na MSWin32
Chroni przed przypadkowym użyciem „^D” z terminala. Jeśli jest to ustawione na true
wartość, nie możesz przypadkowo wyjść z Perldl, wpisując „^D”. Jeśli ustawisz to na
wartość większa niż 1 (i ustawiono PERLDL::MULTI), to nie możesz użyć „^D”, aby wyjść
polecenia wielowierszowe. Jeśli przesyłasz polecenia z pliku lub potoku, to
zmienna nie ma żadnego wpływu.
· $DOM
Katalog domowy użytkownika
· $PERLDL::TERM
To jest obiekt Term::ReadLine powiązany z powłoką Perldl. Można z niego korzystać
procedury wywoływane z Perldl, jeśli polecenie jest interaktywne.
· $PDL::toolongtoprint
Maksymalny rozmiar pdls do wydrukowania (domyślnie 10,000 elementów). To nie jest tylko
zmienna „perldl” lub „pdl2”, ale jest to coś, co jest zwykle potrzebne w pliku
interaktywna sesja debugowania.
Wykonanie skrypty od dotychczasowy „perld” podpowiedź
Przydatnym idiomem do tworzenia skryptów Perldl lub funkcji edycji online jest
pdl> # skrypt emacsa &
-- dodaj kod Perldl do skryptu i zapisz plik
pdl> wykonaj „skrypt”
-- zamień swój ulubiony edytor okienkowy na „emacs” (może być konieczna także zmiana
„&” w systemach innych niż Unix).
Ponowne uruchomienie „do 'script'” aktualizuje wszelkie zmienne i definicje funkcji z pliku
aktualna wersja „skryptu”.
Wykonanie perdl skrypty od dotychczasowy komenda linia
Skrypty PDL to po prostu skrypty Perla, które korzystają z PDL (i prawdopodobnie PDL::NiceSlice).
Ale dla naprawdę leniwych perldl można wywołać jako interpreter skryptu. Ponieważ perldl jest
sam w sobie jest interpretowanym skryptem Perla, większość uników nie pozwoli ci powiedzieć „#!/usr/bin/perldl”
u góry skryptu.
Zamiast tego powiedz „#!/usr/bin/pdl”, a Twój skrypt zostanie wykonany dokładnie tak, jakbyś go wpisał,
linia po linii, do powłoki perldl.
Command przetwarzanie wstępne
UWAGA: Ta funkcja jest domyślnie używana przez PDL::NiceSlice. Poniżej znajdziesz więcej informacji na temat krojenia
po znaku zachęty „perldl”.
W niektórych przypadkach wygodnie jest przetwarzać polecenia przed ich wysłaniem do Perla
wykonanie. Dzieje się tak na przykład w przypadku prezentowania ludziom muszli
nie znają Perla, ale chcą skorzystać z poleceń dodanych lokalnie (np
automatyczne cytowanie argumentów niektórych poleceń).
*UWAGA*: Interfejs przetwarzania wstępnego zmienił się w stosunku do wcześniejszych wersji! Używanie starego sposobu
$PERLDL::PREPROCESS będzie nadal działać, ale jest zdecydowanie przestarzały i może zniknąć w pliku
przyszłość.
Możesz włączyć przetwarzanie wstępne, rejestrując filtr za pomocą funkcji „preproc_add”.
„preproc_add” przyjmuje jeden argument, który oznacza filtr, który ma zostać zainstalowany. Filtr to Perl
odwołanie do kodu (zwykle ustawione w lokalnym pliku konfiguracyjnym), które zostanie wywołane z rozszerzeniem
bieżący ciąg poleceń jako argument, tuż przed wykonaniem ciągu przez powłokę.
Zmodyfikowany ciąg powinien zostać zwrócony. Pamiętaj, że możesz całkowicie utworzyć „perldl”.
bezużyteczny, jeśli nie zwrócisz zmodyfikowanego ciągu; rzucenie palenia jest wtedy jedyną opcją.
Filtry można usunąć z potoku przetwarzania wstępnego, wywołując „preproc_del” za pomocą metody
filtr do usunięcia jako argument. Aby dowiedzieć się, czy filtr jest aktualnie zainstalowany w
użyj potoku przetwarzania wstępnego „preproc_registered”:
pdl> preproc_add $myfilter chyba, że preproc_registered $myfilter;
Poprzednie wersje „perldl” używały zmiennej $PERLDL::PREPROCESS. To nadal będzie działać
ale należy go unikać. Zmień swoje skrypty, aby używać funkcji „preproc_add” itp.
Poniższy kod sprawdzi wywołanie funkcji „mysub” i uwzględni argumenty w nawiasach
qw.
$filter = preproc_add sub{
mój $str = przesunięcie;
$str =~ s/^\s+//; # Usuń spację wiodącą
if ($str =~ /^mysub/) {
my ($polecenie, $argumenty) = split(/\s+/,$str, 2);
$str = "$polecenie qw($argumenty)"
if (zdefiniowane $argumenty && $argumenty !~ /^qw/);
};
# Zwróć ciąg wejściowy, zmodyfikowany zgodnie z wymaganiami
zwróć $str;
};
Spowodowałoby to konwersję:
pdl> mój sub arg1 arg2
do
pdl> moja sub qw(arg1 arg2)
które Perl zrozumie jako listę. Oczywiście potrzeba do tego trochę więcej wysiłku
sprawdź przypadki, w których osoba dzwoniąca dostarczyła normalną listę (i dlatego nie wymaga
automatyczne cytowanie) lub wymagana jest interpolacja zmiennych.
Możesz usunąć ten preprocesor za pomocą funkcji „preproc_del”, która przyjmuje jeden argument
(filtr do usunięcia, musi to być ten sam kod ref, który został zwrócony z poprzedniego
wywołanie „preproc_add”):
pdl> preproc_del $filter;
Przykład rzeczywistego użycia można znaleźć w skrypcie „perldl”. Spójrz na funkcję
„trans”, aby zobaczyć, jak preprocesor Niceslicing jest włączony/wyłączony.
„perld” i PDL::NiceSlice
PDL::NiceSlice wprowadza wygodniejszą składnię krojenia dla piddle'ów. W bieżącym
wersje „perldl” i „pdl2” Niceslicing są domyślnie włączone (jeśli wymagane CPAN
moduły są zainstalowane na twoim komputerze).
Przy uruchomieniu „perldl” poinformuje Cię, czy Niceslicing jest włączony. Komunikat startowy będzie
zawierać informacje w tym celu, coś takiego:
Powłoka perlDL v1.XX
PDL jest objęty CAŁKOWICIE ŻADNĄ GWARANCJĄ. Szczegóły znajdziesz w pliku
„KOPIOWANIE” w dystrybucji PDL. To jest wolne oprogramowanie i Ty
Zachęcamy do jego redystrybucji pod pewnymi warunkami, zob
szczegóły w tym samym pliku.
ReadLines, włączono NiceSlice
Czytanie /home/csoelle/.perldlrc...
Wpisz „demo”, aby wyświetlić demonstracje online
Załadowano PDL v2.XX
Gdy pojawi się komunikat wskazujący, że „NiceSlice” jest włączony, możesz skorzystać z ulepszonego
składnia krojenia:
pdl> $a = sekwencja 10;
pdl> p $a(3:8:2)
Aby uzyskać szczegółowe informacje, zobacz PDL::NiceSlice.
PDL::NiceSlice instaluje filtr w potoku przetwarzania wstępnego (patrz wyżej), aby umożliwić
ulepszona składnia krojenia. Aby to przełączyć, możesz użyć kilku poleceń w powłoce „perldl”.
przetwarzanie wstępne, a także jawnie sprawdza podstawienia, które wykonuje plik NiceSlice
filtr sprawia.
Możesz włączać i wyłączać filtr PDL::NiceSlice, wpisując
pdl> trans # włącz ładne krojenie
i
pdl> notrans # wyłącz niceslicing
odpowiednio. Filtr jest domyślnie włączony.
Aby zobaczyć, jak tłumaczone są Twoje polecenia, włącz raportowanie:
pdl> raport 1;
pdl> p $a(3:8:2)
przetworzone p $a->nslice([3,8,2])
[3 5 7]
Podobnie, w razie potrzeby wyłącz raportowanie
pdl> raport 0;
pdl> p $a(3:8:2)
[3 5 7]
Raportowanie jest domyślnie wyłączone.
Automatycznie wykonać Twój własny haczyki
Zmienna @PERLDL::AUTO jest prostą listą ciągów kodu Perla i/lub odniesienia do kodu. To
służy do zdefiniowania kodu, który będzie wykonywany automatycznie za każdym razem, gdy użytkownik wejdzie w nową linię.
Prostym przykładem byłoby wydrukowanie czasu każdego polecenia:
pdl> push @PERLDL::AUTO,'drukuj skalar(gmtime),"\n"'
pdl> wypisz zera (3,3)
Niedziela 3 maja 04:49:05 1998
[
[0 0 0]
[0 0 0]
[0 0 0]
]
pdl> drukuj „Buu”
Niedziela 3 maja 04:49:18 1998
Boo
pdl>
Lub aby mieć pewność, że wszelkie zmiany w pliku „local.perldlrc” są zawsze wykrywane: –
pdl> push @PERLDL::AUTO, „do 'local.perldlrc'"
Kod ten można oczywiście umieścić *w* 'local.perldlrc', ale bądź ostrożny :-) [Wskazówka: dodaj
„chyba że ($started++)” do powyższego, aby mieć pewność, że zostanie to zrobione tylko raz!]
Inną przykładową aplikacją jest możliwość dodania modułu automatycznego ładowania (np. PDL::AutoLoader).
kod, który pozwala im automatycznie ponownie skanować pliki w poszukiwaniu zmian. To jest
niezwykle wygodne w interaktywnej linii poleceń. Ponieważ ten hak jest tylko w skorupie
nie powoduje to żadnej nieefektywności skryptów PDL.
Na koniec zauważ, że jest to bardzo potężne narzędzie - co oznacza, że należy z niego korzystać
Uwaga!
Użyj perldlp online, korzystając z usług onworks.net