Systemy operacyjne. Laboratorium 7. Perl podstawy. Jarosław Rudy Politechnika Wrocławska 27 kwietnia 2017

Podobne dokumenty
Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Systemy operacyjne. Laboratorium 8. Perl find

Systemy operacyjne. Laboratorium 5. Awk podstawy. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Systemy operacyjne. Laboratorium 3. Find. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Wstęp do Informatyki dla bioinformatyków

Systemy operacyjne. Laboratorium 1. Podstawy oraz powłoka BASH

1 Przygotował: mgr inż. Maciej Lasota

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Skrypty powłoki w systemie Linux

Technologie Informacyjne - Linux 3

KARTA KURSU. Języki skryptowe

Podstawy JavaScript ćwiczenia

Powłoka bash. Kurs systemu Unix 1

System operacyjny Linux

Narzędzia informatyczne w językoznawstwie

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Narzędzia informatyczne w językoznawstwie

Programowanie w języku Python. Grażyna Koba

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Języki programowania zasady ich tworzenia

Systemy operacyjne. Laboratorium 2. Dowiązania. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Trochę o plikach wsadowych (Windows)

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

System operacyjny Linux

2. Łańcuchy tekstowe w PHP

Wyrażenia regularne. Wyrażenia regularne 1/41

Podstawy i języki programowania

1 Podstawy c++ w pigułce.

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Umożliwia ona pokazanie ukrytych plików i katalogów, nazwa ich zaczyna się od kropki.

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

Oczywiście plik musi mieć rozszerzenie *.php

ZASADY PROGRAMOWANIA KOMPUTERÓW

Pracownia Komputerowa wykład III

Wykład 8: klasy cz. 4

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

7. Pętle for. Przykłady

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Języki formalne i automaty Ćwiczenia 6

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Systemy operacyjne. Laboratorium 6. Awk wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

lekcja 8a Gry komputerowe MasterMind

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Kurs WWW. Paweł Rajba.

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

1 Podstawy c++ w pigułce.

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

J ezyk AWK Kurs systemu UNIX

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Programowanie skryptów powłoki

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

Ćwiczenie 1. Wprowadzenie do programu Octave

16MB - 2GB 2MB - 128MB

Pracownia Komputerowa wykład III

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

Wykład 5: Klasy cz. 3

Środowisko programisty Zestaw 7

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

SED - Stream EDitor. edytor strumieniowy. Bogumił Konopka W-11/I-21 Politechnika Wrocławska

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Podstawy programowania. Podstawy C# Tablice

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Zapis algorytmów: schematy blokowe i pseudokod 1

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Dzisiejszy wykład. Narzędzia informatyczne w językoznawstwie. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Bazy danych Karta pracy 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wykład PASCAL - Pliki tekstowe

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Umieszczanie kodu. kod skryptu

Podstawy programowania skrót z wykładów:

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Transkrypt:

Systemy operacyjne Laboratorium 7 Perl podstawy Jarosław Rudy Politechnika Wrocławska 27 kwietnia 2017 Temat obejmuje podstawowe zrozumienie języka Perl tworzenie skryptów, składnię, obsługę zmiennych, wejścia/wyjścia itp. Jako dodatkowe źródło wiedzy o Perlu zaleca się stronę perldoc. Używanie typowego manuala (man perl) nie jest zalecane. 1 Wstęp Perl jest językiem programowania, którego użyjemy do zastąpienia praktycznie wszystkich poprzednich mechanizmów i komend. Pozwoli on nam na kopiowanie, usuwanie czy przeglądanie plików i dowiązań jak bash. Pozwoli na przeszukiwanie i przetwarzanie drzew katalogowych podobnie do finda i mechanizmu potoków. Umożliwi także przetwarzanie tekstu w sposób zbliżony do awka. Co więcej, bazowa składnia perla czerpie z języka C/C++, a sam język jest w większości przenośny (tzn. dostępny także dla Windowsa, chociaż dostępne funkcje mogą się różnić). Perl ma też wady pełni on wiele funkcji (odpowiednik powłoki systemowej, odpowiednik narzędzi typu awk czy grep, programowanie obiektowe), jest językiem ogólnego przeznaczenia i działa według filozofii istnieje więcej niż jeden sposób by rozwiązać dany problem. W rezultacie perl nie jest najprostszym językiem, co obejmuje m.in. składnię. Ponadto część narzędzi/technik będzie podobna do tych, które znany z wcześniejszych laboratoriów, a część nie. Zaczniemy od podstawowych cech perla, które posłużą nam do wykonywania tych samych zadań co w bashu. 2 Uruchamianie skryptów Skrypty perlowe zaczynamy linią #!/usr/bin/perl (o ile perl został zainstalowany w domyślnej lokalizacji) zamiast #!/bin/bash. Instrukcje use strict; 1

i use warnings; mogą zostać umieszczone w początkowej części skryptu, co czasami może pomóc wykryć niektóre błędy. Pierwsza z tych instrukcji powinna być jednak używana z rozwagą, gdyż wymusza restrykcyjny sposób pisania kodu (np. wymóg deklarowania zmiennych lokalnych z użyciem słów kluczowych local i my), co może sprawiać problemy bez głębszej znajomości perla. 3 Zmienne i ich kontekst Zmienne w perlu zawsze używane są w pewnym kontekście. Podstawowym kontekstem jest kontekst skalarny. Skalary przechowują pojedynczą wartość (liczba, tekst itp.) i oznaczane są poprzez znak dolara: $skalar = 15; Skalarów będziemy używać przez większość czasu. Ze skalarami związanych jest kilka niuansów, ale zanim do nich przejdziemy przedstawimy kolejny kontekst: tablicowy (ewentualnie listowy) 1. Kontekst tablicowy oznaczany jest przez znak ''@''. Przykładowa definicja tablicy 3 elementów: @tablica = ( ''Element1'', ''Element2'', ''Element3'' ); Należy zwrócić uwagę na to, że nawiasy są okrągłe, a nie klamrowe! Tablice same w sobie oznaczają kontekst tablicowy, ale pojedynczy element tablicy jest skalarem! Jeśli więc chcemy przypisać wartość do i-tego elementu tablicy do pewnej (skalarnej) zmienne, to powinniśmy napisać: $zmienna = $tablica[i]; Ciekawą cechą perla jest możliwość indeksowania elementów tablicy licząc od jej końca z użyciem indeksów ujemnych: $tab[-1] $tab[-2] # ostatni element # przedostatni element Tablice perlowe indeksowane są więc od 0 (kierunek od początku tablicy) lub od -1 (kierunek od końca tablicy). Kolejną kwestią jest uzyskanie liczby elementów w tablicy. Pierwszą (niezalecaną) metodą jest uzyskanie indeksu ostatniego elementu tablicy (składnia ''$#''), a potem dodanie do wyniku jedynki: $liczba elementow = $#tablica + 1; Drugim sposobem uzyskania liczby elementów jest... użycie tablicy w kontekście SKALARNYM. Jeśli chcemy przypisać wynik do zmiennej skalarnej, to sprawa jest prosta: $liczba elementow = @tablica; 1 Tablice i listy nie są dokładnie tym samym w perlu, ale dla uproszczenia możemy tak założyć. 2

Zauważmy, że po prawej stronie jest cała tablica (''@''), zaś po lewej stronie jest skalar. Problem pojawia się, gdy potrzebujemy uzyskać liczbę elementów tablicy w sytuacji, gdy kontekst jest określany automatycznie i wynik nie jest skalarem. Przykładowo pętla for: for( @tablica ) wymusi kontekst tablicowy pętla wykona się tyle razy ile jest elementów tablicy (zwykle taki jest cel). Jednak, co jeśli chcemy w tym momencie użyć kontekstu skalarnego? Możemy albo użyć poprzedniej metody: $zmienna = @tablica; for( $zmienna ) Można też wymusić kontekst skalarny za pomocą operatora scalar: for( scalar @tablica ) W powyższych przypadkach pętla wykona się tylko raz z wartością będącą liczbą elementów tablicy. Oprócz skalarów i tablic występują także inne konteksty, jak kontekst hashowy i referencja, które jednak pojawią się dopiero w następnym laboratorium. 4 Argumenty skryptu W bashu argumenty przekazane do skryptu przechowywane były w zmiennych $0, $1, $2 itp. przy czym $0 przechowywało nazwę (ścieżkę) samego skryptu. W perlu $0 ma identyczną funkcję, ale zwykłe argumenty przechowywane są w specjalnej tablicy @ARGV 2 (podobnie do języka C). Tak więc odpowiednikiem bashowego $1 w perlu jest $ARGV[0], zaś odpowiednikiem $# jest @ARGV w kontekście skalarnym lub $#ARGV+1. 5 Funkcja print i podstawowe separatory Perl do drukowania tekstu na ekran wykorzystuje funkcję print. Zwykle wywołuje się ją tak jakby była komendą bashową (bez nawiasów): print argument; zamiast print (argument); 2 Zmienne $1, $2 itp. występują w perlu, ale mają inne znaczenie. 3

Związane jest to z faktem, że źle ustawione nawiasy mogą zostać uznane za definicję listy i wywołać trudne w znalezieniu błędy. Perl, podobnie do awka wykorzystuje wyjściowe separatory pól/rekordów, które wykorzystywane są przez print. Dla awka separatory wyjściowe były zawarte w zmiennych OFS (pola) i ORS (rekordy). W przypadku perla zmiennymi tymi są $, (pola) oraz $\ (rekordy). W przeciwieństwie do awka, oba separatory wyjściowe w perlu domyślnie zawierają PUSTE łańcuchy. Jeśli chcemy, aby zawierały spację i nową linię (domyślne zachowanie awka), to należy je ustawić: $, = '' ''; $\ = ''\n''; Tak więc instrukcja: print ''Ala'', ''ma'', ''kota''; Domyślnie wydrukuje tekst ''Alamakota'' bez wstawienia nowej linii na końcu. Jeśli jednak ustawimy separatory jak pokazano powyżej, to instrukcja da efekt ''Ala ma kota'' wraz ze znakiem nowej linii. Tablice również posiadają swoje separator, które jest interpretowany przez print. Separator ten jest przechowywany w zmiennej $''. Jeśli utworzymy tablicę: @tab = ( ''A'', ''B'', ''C''); a następnie wywołamy: print @tab; to otrzymamy wynik ''ABC''... jeśli jednak ujmiemy odwołanie do tablicy w cudzysłowy: print ''@tab'' to wynikiem będzie ''A B C''. Dzieje się tak dlatego, że domyślną wartością zmiennej $'' jest pojedyncza spacja, a zmienna ta działa tylko jeśli tablica jest w cudzysłowach. W tym miejscu warto zaznaczyć, że cudzysłowy ('') i apostrofy (') w perlu działają podobnie do ich wersji bashowych apostrofy sprawiają, że tekst pomiędzy nimi jest traktowany dosłownie, podczas gdy cudzysłowy pozwalają na interpretację niektórych znaków specjalnych. Perl pozwala jednak używać obu trybów ( dosłownego i interpetowanego ) przy użyciu w zasadzie dowolnych znaków ograniczających zamiast '' czy '. Cecha ta jest nieco zaawansowana i nie będziemy je tutaj szczegółowo omawiać, ale jest przydatna, gdy pracujemy z tekstem, który posiada w sobie zarówno znaki '' jak i '. Ostatnia uwaga: łańcuchy tekstowe w perlu sklejane są za pomocą operatora kropki (''.''). Jest to podobne do języka php, ale zupełnie różne od awka (gdzie sklejaniem zajmuje się operator spacji) czy basha (gdzie tekst jest sklejany bez żadnego separatora). Oczywiście możemy użyć cudzysłów/apostrofów jako sklejaczy, tak więc: 4

oraz print ''Ala ''. ''ma ''. $zmienna. '' kotow!''; print ''Ala ma $zmienna kotow!''; są praktycznie równoważne. 6 Domyślna zmienna i cukierki składniowe Perl bardzo często pozwala na wykorzystanie magicznej zmiennej $. Zmienna ta wykorzystywana jest jako domyślny parametr wielu funkcji. Przykładowo: print; # To samo co print $ ; Składnia ta ma na celu zbliżenie programu perla do języka naturalnego, w którym podmiot nie jest powtarzany w kolejnych zdaniach, jeśli się nie zmienił. Oczywiście zwykle nie ma wymogu korzystania ze zmiennej $. Zmienna ta jest także powodem dziwnej składni pętli for pokazanej we wcześniejszej części instrukcji. Jest tak dlatego, że program: for $ ( @tablica ) print $ ; ma takie samo znaczenie jak: for ( @tablica ) print; Oczywiście możemy w pętli for użyć innej zmiennej zamiast $. W tym miejscu omówimy też pewne nietypowe cechy składni perla. Po pierwsze, perl wymusza umieszczanie nawiasów klamrowych w miejscach typu instrukcja if, nawet jeśli wnętrzem ifa jest pojedyncza instrukcja: if ( warunek ) instr; if ( warunek ) instr; # poprawne w C i perlu # poprawne w C, ale NIE w perlu Uwaga ta dotyczy także pętli typu for, while i podobnych bloków. Po drugie, w perlu nawet prosta instrukcja if może zostać zapisana na kilka sposobów. Przykładowo, poniższe 4 instrukcje są równoważne: if ( A ) B; B if A; unless (! A ) B; B unless! A; 5

7 Podstawowa obsługa plików Pliki w perlu są obsługiwane poprzez tak zwane uchwyty (ang. filehandler), które przechowują odwołanie do pliku (podobnie do uniksowych deskryptorów plików). Należy zauważyć, że uchwyty nie są zmiennymi i nie są same w sobie poprzedzone znakiem kontekstu. Przykładowym uchwytem jest UCHWYT. Zmienne mogą zostać jednak wykorzystane do przechowywania uchwytów: $zmienna na uchwyt = UCHWYT; Plik otwierane są funkcją open: open UCHWYT, ''sciezka''; Kod ten otwiera plik tylko do odczytu i jest równoważny: lub open UCHWYT, ''<'', ''sciezka''; open UCHWYT, ''<sciezka''; Symbol < może zostać zastąpiony przez inne symbole, by otworzyć plik w innym trybie niż odczyt. Pliki są zamykane funkcją close: close UCHWYT; W tym miejscu warto wspomnieć o funkcji die, która kończy skrypt perlowy, wypisując przy tym podaną wiadomość. Często łączy się to rozwiązanie ze zmienną $!, która przechowywyje opis ostatniego błędu: open UCHWYT, ''sciezka'' or die ''Nie udalo sie otworzyc pliku $sciezka poniewaz: $!''; Pliki są odczytywane z podziałem na rekordy, w sposób nieco zbliżony do awka. Separatorem rekordów wejściowych jest zmienna $/. Szczegółowy sposób zachowania tej zmiennej zostawimy na późniejsze laboratoria. Na razie wystarczy nam wiedza, że domyślną wartością $/ jest znak nowej linii, więc perl będzie odczytywał plik liniami. Możemy odczytać pojedynczą linię: $kolejna pojedyncza linia = <UCHWYT>; lub cały plik jako tablicę linii: @wszystkie pozostale linie = <UCHWYT>; Zauważmy, że oba sposoby zaczynają odczyt od aktualnego wskaźnika pliku. Jeśli więc odczytaliśmy już pół pliku to wywołanie @tablica = <UCHWYT>; umieści w tablicy tylko drugą połowę pliku. Powyższy kod możemy użyć wraz z pętlą for oraz magiczną zmienną $ : 6

for ( <UCHWYT> ) print; co wydrukuje wszystkie linie pliku. Jedną z różnic perla względem awka jest to, że perl NIE usuwa separatora z końca rekordu. Innymi słowy, powyższy kod wydrukuje nowe linie dlatego, że były one w pliku. Jeśli wcześniej w programie napisaliśmy $\ = ''\n'', to print doda dodatkowy znak nowej linii, co oczywiście skutkuje dodatkowymi pustymi liniami w wydruku. Aby rozwiązać ten problem należy usunąć separator z końca linii. Służy do tego funckja chomp. Usuwa ona aktualną wartość zmiennej $/ z końca podanego argumentu. Ponieważ domyślną zmienną dla chomp jest, oczwiście, $, to możemy napisać: for ( <UCHWYT> ) chomp; print; Odczyt plików można także wykonać z użyciem funkcji read. Zapis do pliku można wykonać z użyciem znanej nam funkcji print, po dodaniu do niej odpowiedniego uchwytu: print UCHWYT ''tekst''; Oczywiśce przed próbą zapisu plik należy otworzyć, a po skończeniu pracy plik należy zamknąć. 8 Odczytywanie wpisów katalogowych Aby uzyskać podobny efekt do komendy ls, czyli otrzymać listę wpisów katalogowych, wykorzystujemy podobne funkcje jak przy odczycie zwykłych plików, ale z prefiksem dir : opendir $zmienna uchwytu, $sciezka do katalogu or die $!; while ( readdir $zmienna uchwytu ) print; closedir $zmienna uchwytu; Powyższy kod wydrukuje na ekran wszystkie wpisy z katalogu danego ścieżką $sciezka do katalogu, wliczając w to wpisy ukryte (czyli także wpisy ''.'' oraz ''..''). 7

9 Testowanie plików i operatory Perl umożliwia testowanie właściwości pliku podobnie do bashowych komend test i [. Wykorzystywane są do tego operatory perlowe. Operator sprawdzania czy $sciezka jest istniejącym plikiem regularnym: if ( -f $sciezka ) jest dostępny tak samo jak operator większości: if ( $zmienna > 5 ) Oczywiście operator > jest dwuargumentowy, podczas gdy -f jest jednoargumentowy. Ponadto, w powyższym przykładzie wartością zmiennej może być prawdziwa ścieżka (jak ''sciezka/do/pliku'') lub uchwyt do pliku. Można też użyć uchwytu wprost, bez posługiwania się zmienną: if ( -f UCHWYT ) Operatorów tego typu można używać w dowolnym miejscu, w którym spodziewamy się wyrażenia przyjmującego wartość logiczną. W celu znalezienia opisu operatorów plikowych w perldocu należy w pasku wyszukiwania wpisać ''-x''. Pozostałe operatory w perlu są podobne do tych wykorzystywanych w komendzie test, z jedną różnicą. W komendzie test do porównywania łańcuchów używaliśmy operatorów = (lub ewentualnie ==) oraz!=, zaś do porównywania liczb używaliśmy operatorów -eq, -ne itp. W perlu jest odwrotnie: operatory == (nie =, które oznacza przypisanie!) oraz!= służą do porównywania liczb, wraz z >, <, >=, <= itp., operatory eq oraz ne służą do porównywania tekstu. Widzimy więc, że operatory perla zawierają cechy zarówno operatorów z języka C/C++ jak i tych znanych z basha. 10 Inne funkcje Wszystkie ważne komendy znane z basha, takie jak cp, mv, rm, readlink czy ln posiadają swoje perlowe odpowiedniki. Jednakże nie zawsze funkcja perlowa nazywa się tak samo jak komenda basha. Przykładowo do tworzenia linków symbolicznych w bashu służyła komenda ln, zaś w perlu odpowiada za to funkcja symlink. 8