The Diary
Дневникът на Георги
<- Дневника
Добавяне на коментар
Четвъртък, 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.
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2008 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 :)
Поздрави,
Петър
Написа Петър Пенчев (email) (www) на 07-Apr-2005 18:26