expand uvozovek

Honza Pazdziora adelton na informatics.muni.cz
Pátek Červen 25 09:30:58 MEST 2004


On Thu, Jun 24, 2004 at 09:29:45PM +0200, Jiri Polcar wrote:
> 
> v promenne $a mam retezec, ktery obsahuje nejake specialni znaky,
> napriklad "\n", ale retezec je uveden v apostrovech. Jak prinutim Perl,
> aby specialni znaky v retezci vyhodnotil? Uvedu priklad:
> 
> mam
> 
>     $a = '-\npepa\n-';
> 
> a chci aby v $b bylo
> 
>     $b = "-\npepa\n-";
> 
> Mam jedno reseni:
> 
>     $b = eval qq["$a"];
> 
> ale to nemohu pouzit, protoze $a muze obsahovat i kusy kodu Perlu a
> eval() pak vyhodi vyjimku.

Pokud nemate obsah toho $a pod kontrolou, pak nezbyde, nez vypsat
seznam veci, ktere chcete, aby se prevedly, a prevest jenom ty.
Napriklad

	my %mapovani = (
		'\n' => "\n",
		'\t' => "\t",
		'\b' => "\b",
		'\k' => "krtek",
		'\0' => "\0",
		);
	$a =~ s/(\\.)/ exists $mapovani{$1} ? $mapovani{$1} : $1 /ge;

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
		Only self-confident people can be simple.


Další informace o konferenci Perl