Font
[thread]8435[/thread]

Regulärer Ausdruck mit \Q: Reg Expression Problem

Reader: 1


<< >> 8 entries, 1 page
ripperrd
 2006-10-19 12:39
#71004 #71004
User since
2006-10-19
8 articles
BenutzerIn
[default_avatar]
Hallo Community: ich habe folgendes Prob:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
$content="C:\Programme\test";

schreibe ich:

/\Q$content/ dann funzt es

schreibe ich:

$content="\QC:\Programme\test";

/$content/
dann funzt es nicht


ich würde gerne den String der Content zugewiesen wird in eine textdatei auslagern. Das \Q müsste ebenfalls in diese Textdatei geschrieben werden, da ich für jeden string separat das \Q nutzen bzw. nicht nutzen möchte. Was kann man tun, damit das \Q auch erkannt wird, wenn man es in den String auslagert und nicht direkt in m/.../ schreibt?
pq
 2006-10-19 13:09
#71005 #71005
User since
2003-08-04
12208 articles
Admin1
[Homepage]
user image
das kann beides nicht funktionieren. aus dem \t wird immer ein tab.
also ein $var = "\t" wird nie einen backslash sehen. "\P" auch nicht, wobei
\P aber ein unbekanntes steuerzeichen ist und somit der \ ignoriert wird.zum glueck warnt
einen perl bei sowas.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
renee
 2006-10-19 13:11
#71006 #71006
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Nix, benutz quotemeta.

Aber solche Strings wie Windows-Pfade muss man entweder gleich so schreiben:
Code: (dl )
my $content = "C:\\Programme\\test";
oder
Code: (dl )
my $content = 'C:\Programme\test';


Du kannst auch qr (siehe perldoc perlop) verwenden:
Code: (dl )
1
2
3
4
my $content = qr~\QC:\Programme\test~; 
my $string = q~C:\Programme\test\datei.txt~;
$string =~ s/$content/./;
print $string;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2006-10-19 14:34
#71007 #71007
User since
2005-08-17
1420 articles
BenutzerIn
[Homepage] [default_avatar]
Oder die Pfade so schreiben:
Code: (dl )
my $string = "c:/Programme/test";

Meines Wissens sollte das unter Windows auch so gehen.
renee
 2006-10-19 14:52
#71008 #71008
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Nicht immer! Manche Funktionen verlangen es in der Form C:\.... Da muss man aufpassen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
nepos
 2006-10-19 15:19
#71009 #71009
User since
2005-08-17
1420 articles
BenutzerIn
[Homepage] [default_avatar]
Ok, dann schweige ich wieder. Unter Windows mach ich mit Perl normal nix.
renee
 2006-10-19 15:23
#71010 #71010
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Bei den meisten Builtin-Funktionen kann man Deine Version auch durchaus nehmen. Aber wenn man sich ganz sicher sein will und alles wirklich portable schreiben will, sollte man sowieso CPAN:File::Spec verwenden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2006-10-20 00:21
#71011 #71011
User since
2003-11-28
3645 articles
ModeratorIn
[default_avatar]
Bei Windows fängt der Kopf an zu brummen, wenn man das meiste in einem cygwin-Perl laufen lässt, man dann aber damit einen reinen Windows-Prozess starten muss... Wenn da die Pfade alle stimmen sollen, hilft kein File::Spec mehr.
<< >> 8 entries, 1 page



View all threads created 2006-10-19 12:39.