Perl, Datové typy (6.díl)

Napsal O webu (») 30. 12. 2007 v kategorii Programování, přečteno: 1646×
obrazky/logo_perl.jpg

Řetězce

Řetězce jsou chápány jako jeden skalár složené z posloupnosti znaků. Není možné přistupovat ke každému jednotlivému znaku. Minimální délka je nulová, maximální je omezena velikostí dostupné paměti, přičemž aktuální délka se odvíjí podle toho, jak s daty pracujeme. Použitá znaková sada určuje to, kolik bude jeden znak zabírat v paměti. V znakové sadě ASCII je délka jednoho znaku 1 byte. Znaky Unicode mohou zabírat více bytů, UTF8 jeden až šest.

Práce s řetězci

Řetězce v uvozovkách podléhají vkládání hodnot proměnných a speciálních sekvencí začínajících obrácenými lomítky. Existují znaky, které ve spojení s obrácenými lomítky získávají unikátní význam - známé jako metaznaky. Velice jednoduchý příklad je v následujícím kódu.


$den = 'pátek';

Print "Dnes je $den\n"; //vypíše text: Dnes je pátek




Jelikož jméno proměnné začíná speciálním symbolem, není potřeba při vkládání její hodnoty do řetězce zvláštní syntaxi. Po nalezení znaku $ je uvozen začátek jména proměnné. Chceme-li ovlivnit způsob vyhledání proměnné při vkládání její hodnoty do řetězce, můžeme použít dvojici znaků { }. Situace je znázorněna v následujícím příkladu.



$a = 3;

$b = 3;

Print "${ x }a$b =, $a*$b"; // vytiskne: 3x3=9




Do řetězců je možné vkládat také hodnoty z proměnných typu pole. V takovémto případě je mezi znaky pole vložen obsah proměnné $" ($LIST_SEPARATOR), jejíž výchozí znak je mezera.



@pole = (1, 2, 3);

Print "Obsah pole je: @pole";

$" = ' + '; /// Změna oddělovače prvků pole

Print "@pole"; /// Vytiskne '1+2+3'




Metaznaky

Kromě hodnot proměnných lze do řetězců vkládat i znaky popsané specifickou sekvencí znaků - označované také jako metaznaky. Jejich souhrn spolu s jejich popisem je v následující tabulce.

MetaznakVýznam
Nový řádek
Návrat vozíku
Tabulátor
fNová stránka
Backspace
aPípnutí
eZnak ESC
101,012Znak s ASCII hodnotou osmičkově
x61Znak s ASCII hodnotou šestnáctkově
cCZnak CTRL+C
x{263a}Znak v znakové sadě UNICODE
N{Jmeno}Znak se zadaným jménem
Znak


V dalším díle se podíváme na další možnosti práce s řetězci. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.



Autor: Robert Habrman
Štítky: Perl
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
perlista amater z IP 78.157.170.*** | 15.8.2009 10:59
asi vitr, MACHALE:
$a = 3;

$b = 3;

Print "${ x }a$b =, $a*$b"; // vytiskne: 3x3=9

: print se pise s MALYM p a vytiskne to tohle: a3 =, 3*3
Knahaka z IP 178.105.74.*** | 22.1.2011 10:17
$ perl test.pl
String found where operator expected at test.pl line 5, near "Print "${ x }a$b =
, $a*$b""
        (Do you need to predeclare Print?)
Bareword found where operator expected at test.pl line 5, near "// vytiskne"
        (Missing operator before vytiskne?)
syntax error at test.pl line 5, near "Print "${ x }a$b =, $a*$b""
syntax error at test.pl line 5, near "// vytiskne"
Execution of test.pl aborted due to compilation errors.

User@acer-6e40e97492 ~
$ cat test.pl
$a = 3;

$b = 3;

Print "${ x }a$b =, $a*$b"; // vytiskne: 3x3=9

User@acer-6e40e97492 ~
$ perl -version

This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int
(with 13 registered patches, see perl -V for more detail)

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
Knahaka z IP 178.105.74.*** | 22.1.2011 10:21
Oprava prvni chyby:

$ cat testII.pl
$a = 3;

$b = 3;

print "${ x }a$b =, $a*$b"; // vytiskne: 3x3=9

User@acer-6e40e97492 ~
$
Knahaka z IP 178.105.74.*** | 22.1.2011 10:24
Byl orezan vstup. Puvodni vstup byl:

$ perl testII.pl
Bareword found where operator expected at testII.pl line 5, near "// vytiskne"
        (Missing operator before vytiskne?)
syntax error at testII.pl line 5, near "// vytiskne"
Execution of testII.pl aborted due to compilation errors.

User@acer-6e40e97492 ~
$ cat testII.pl
$a = 3;

$b = 3;

print "${ x }a$b =, $a*$b"; // vytiskne: 3x3=9


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel jedna a šest