Avatar billede dank Nybegynder
10. november 2005 - 22:26 Der er 2 kommentarer og
1 løsning

strings 101

Det virker måske noget banalt, men nedenstående driller lidt.

Jeg får en linie, fra f.eks. en fil.. Disse linier kan indeholde mange forskellige karakterer.

Hvordan escaper jeg dem ud, så nedenstående kode ville virke. og der ikke forsvinder karakterer. Jeg har kigget på qq, qw, qx, men synes ikke lige jeg kan gennemskue hvordan det skal gøres.

$line = "<1234.ABC/AA3057@abc.def>";
if ($line =~ m/\<(.*)\>/i) {
$var = $1;

}
print $var;

output: 1234.ABC/AA3057.def

Således at "@abc" er 'forsvundet'...

Nogen det kan hjælpe?
Avatar billede Slettet bruger
11. november 2005 - 06:35 #1
#!/usr/bin/perl -w

use warnings;
use strict;

my $line = "<1234.ABC/AA3057@abc.def>";
my $var;

if ($line =~ m/\<(.*)\>/i) {
$var = $1;

}
print $var;

Her fejler linie 6 [my $line = "<1234.ABC/AA3057@abc.def>";] fordi den compileren tror den den skal lave string-interpolation på @abc så derfor kan den køre hvis du  enten

1) Escaper stringen (retteligt @) sådan her

my $line = "<1234.ABC/AA3057\@abc.def>";

2) Bruger single quotes som ikke interpolerer stringen

my $line = '<1234.ABC/AA3057@abc.def>';

Hvis du læser en sådan string fra en fil burde der ikke være det problem.
Avatar billede dank Nybegynder
11. november 2005 - 12:16 #2
Jeps.. har fået det til at virke... viste sig at være fordi at jeg forsøgte at skrive en fil med en "ulovlig" sammensætning af karakterer i filnavnet... ://

Opretter du svar så accepterer jeg dit svar..
Avatar billede Slettet bruger
11. november 2005 - 12:56 #3
svar ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester