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?
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.