Article View: algonet.amiga
Article #39Re: Perl, insert char to string
From: Jesper Nilsson
Date: Sun, 25 Feb 1996 00:00
Date: Sun, 25 Feb 1996 00:00
85 lines
4116 bytes
4116 bytes
In swnet.unix sommar@sophocles.algonet.se (Erland Sommarskog) stated:
>Hans Malmberg (hansmbg@algonet.se) writes:
>> $dtdate = "$hour\k$min\k$sec\ss$year\h$mon\h$mday";
>
>>Vad jag g�r att jag vill ha ett kolon (grafiskt) och
>>d�rf�r stoppar jag in ett 'k' i str�ngen, programmet h�mtar
>>...
>>Men, jag ville ha 'c' f�r colon. '12c05c44'
>>
>>Och, jag provade med att stoppa in ett 'c' i str�ngen,
>>f�r att h�lla mig till engelsk syntax hela v�gen...
>>Det gick inte, '\c' skrevs ut som 'd' n�r jag lusade av.
>>
>>Jag antar d� att '\c' betyder n�got i Perl som f�r
>>utskriften 'd'.
>
>Perl-manualen �r lite oklar, men mina experiment tyder p� att \cX,
>d�r X �r godtyckligt tecken fr�n @ till _ interpoleras som mot-
>svarande kontrolltecken. Dvs "\cG" f�r terminalens klocka att l�ta.
St�mmer precis. F�r mer info om metacharacters och diverse
annat skoj i perls str�ngar kan man (om man har perl5) titta
p� manualsidan f�r "perlre".
>Sekvensen "\c$" blir d� allts� inte s�rskild meningsfull, men r�kar
>resultera i ett "d".
>
>Allm�nt g�ller f�r "\" i str�nginterpolering att framf�r tecken som
>inte �r alfanumeriska s� betyder det att tecknet ska tolkas som det
>�r, och inte i n�gon eventuell specialbetydelse. Precis motsatt �r
>det f�r alfanumeriska tecken, h�r betyder "\" att tecknet har en
>specialbetydelse och inte �r en bokstav eller en siffra. Det r�kar
>nu vara s� att "c" har en s�dan specialbetydelse, men inte "k", "h"
>eller "s", varf�r Hans' exempel synes fungera med "k" men inte "c".
>
>Men hur ska han nu f�rfara? Det finns flera s�tt:
>
>$dtdate = "${hour}c${min}c${sec}ss${year}h${mon}h${mday}";
>$dtdate = $hour . "c" . $min . "c" . $sec . "ss" .
> $year . h . $mon . "h" . $mday;
>$dtdate = join("c", $hour, $min, $sec) . "ss", join("h", $year, $mon, $mday);
L�mpligast �r att anv�nda f�rsta s�ttet, det �r mest effektivt,
konkatenering med "." och anv�ndande av "join" resulterar i flera
anrop initui perl.
Om man k�nner sig irriterad p� att skriva {} runt alla variablerna kan
man g�ra f�ljande:
$c = "c";
$ss = "ss";
$h = "h";
$dtdate = "$hour$c$min$c$sec$ss$year$h$mon$h$mday";
Fast det �r lite otympligt det ocks� och f�rorenar ens namespace.
Man kan f�r tydlighetens skull ist�llet g�ra:
$dtdate = "$hour:$min:$sec++$year;$mon;$mday";
$dtdate =~ tr/:+;/csh/;
Man kan ocks� v�lja att direkt skriva ut str�ngen, den ser ju inte
ut som om den beh�vs mer �n en g�ng per fil:
print $hour, "c", $min, "c", $sec, "ss", $year, "h", $mon, "h", $mday, "\n";
Detta blir luftigt och mera l�ttl�st.
Men till sist: Varf�r inte ha en fil som heter ":.gif"?
B�ttre operativsystem har inga problem med en s�n fil:
$dtdate = "$hour:$min:$sec__$year-$mon-$mday";
>${namn} �r ekvivalent med $namn och anv�nds n�r situationen s� kr�ver.
>(Detta �r samma notering som i shell.) Punkt som anv�nds i andra exemplet
>�r helt enkelt str�ngkonkatenering. Det g�r ocks� att anv�nda join som
>sl�r ihop elementen i en lista till en str�ng med ett givet tecken som
>separator.
>Erland Sommarskog, Stockholm, sommar@algonet.se
/^JN - Jesper Nilsson
--
I've heard of UNIseX, but I've never had it.
Jesper Nilsson -- dat92jni@ludat.lth.se || jesper@df.lth.se
Technical Details
Message-ID:
<4gpnsu$lsn@news.lth.se>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<1377.6628T892T1845@algonet.se> <4gnnl6$lsl@sophocles.algonet.se>Show Full Headers
Complete Article Headers
X-Google-Language: SWEDISH,ASCII X-Google-Thread: f7a1c,92c90354a9a199a7 X-Google-Attributes: gidf7a1c,public X-Google-Thread: 10e356,92c90354a9a199a7 X-Google-Attributes: gid10e356,public X-Google-Thread: fad40,92c90354a9a199a7 X-Google-Attributes: gidfad40,public From: dat92jni@ludat.lth.se (Jesper Nilsson) Subject: Re: Perl, insert char to string Date: 1996/02/25 Message-ID: <4gpnsu$lsn@news.lth.se> X-Deja-AN: 141022292 references: <1377.6628T892T1845@algonet.se> <4gnnl6$lsl@sophocles.algonet.se> organization: Dept. of Computer Science, Lund University, Sweden newsgroups: algonet.amiga,algonet.unix,swnet.unix