The Diary
Дневникът на Георги
<- Сряда, 6 Април 2005 | Начална страница | Петък, 8 Април 2005 ->
Четвъртък, 7 Април 2005
14:36(без)Полезен код за днес - perl one liner, който обръща текст кодиран по следният
начин %aa%bb%cc%d0 (използва се за кодиране на символи с ASCII код по-голям от 127),
в самите символи, които са кодирани:
echo "%C1%E0%E9 %F5%F3%E9" | perl -ne 'while (m/%([a-zA-Z0-9]{2})/) {$x=pack("C",hex("0x$1")); s/%$1/$x/;} print;'
Коментари
TIMTOWTDI, но твоето е по-оптимално. Личи си че си по-спец на perl-а
Защо е нужен while при наличието на -p?
Така е добре :
perl -pe 's/%([A-Fa-f0-9]{2})/pack("H*",$1)/ge'
Хмм... в случая между while и -p връзка няма много; това, което прави while ненужен, е /g. А защо оставих while - бях се заблудил, че това е един от случаите, когато това е нужно - като случаите, описани в perldoc perlop при 'Occassionally, you can't use just a "/g"...' - последният пример там, с разширяването на табулациите до интервали, е особено забавен, ако заместиш 1 while s///e с s///ge :)
Но прав си, тук не е нужно, и без while е по-просто.
Добре де, и между while и -p има връзка, но само доколкото while беше нужен при -n заради print, а при -p няма изричен print... а сега достатъчно флупости наговорих за една вечер :)
http://linux.drun.net/files/_
ей това скриптче мисля върши същата работа, и е направено да преименува всички файлове в текущата директория :)
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
Абе... не че нещо, ама...
perl -pe '1 while s/%([A-Fa-f0-9]{2})/pack("H*",$1)/ge'
:))
И между другото, и в твоя пример трябва да бъде A-Fa-f, а не A-Za-z :)
Поздрави,
Петър
Написа Петър Пенчев (www) на 07-Apr-2005 15:26