Al Beshenov ([info]beshenov) wrote in [info]perldev,
@ 2007-02-26 01:39:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
uniesc.pl

Useful thing. Can you suggest/correct something?

#!/usr/bin/perl -w

use Getopt::Long;
use utf8;
use encoding utf8;
use charnames qw(:full);

GetOptions ( "format=s" => \$format );

# if ($format eq "Source" || !defined($format))
if ($format eq "Source") { # Escape as \uFFFF
	foreach my $str (<STDIN>) {
		utf8::decode($str);
		foreach (unpack("U*", $str)) {
			if ($_ > 127) {
				printf "\\u%04x", $_;
			}
			else {
				printf chr($_);
			}
		}
	}
}

else {
	if ($format eq "XML") { # Escape as &#xFFFF; (XML entities)
		foreach my $str (<STDIN>) {
			utf8::decode($str);
			foreach (unpack("U*", $str)) {
				if ($_ > 127) {
					printf "&#x%04x;", $_;
				}
				else {
					printf chr($_);
				}
			}
		}
	}

	else {
die "uniesc.pl, the Unicode Escaper
Usage:
	uniesc.pl --format XML
for escaping as &#xFFFF;
or
	uniesc.pl --format Source
for escaping as \\uFFFF

Recommended:
	cat ifile | uniesc.pl [options] > ofile
";
	}

}



(Post a new comment)


[info]valera
2007-02-26 02:15 am UTC (link)
Убери пожалуйста под кат, этот и предыдущий пост (код).

(Reply to this)(Thread)


[info]beshenov
2007-02-26 07:24 am UTC (link)
Не хочу. Глупая привычка, если смысл сообщения теряется при скрытии чего-либо, а размер сообщения не тянет на сотню килобайт...

(Reply to this)(Parent)(Thread)


[info]valera
2007-02-26 07:29 am UTC (link)
Ладно, пока никто не жалуется, пусть будет. Но дело не в количестве килобайтов, а в том, что люди это читают в френдленте, а два поста подряд с кодом занимают немало места.

(Reply to this)(Parent)(Thread)


[info]beshenov
2007-02-26 01:32 pm UTC (link)
Сугубо ваши личные неудобства (плюс недостатки системы LJ), а если суть скрывается под ссылкой "Read more" (т.е. непонятно, что именно последует), то очень плохо...

(Reply to this)(Parent)(Thread)


[info]valera
2007-02-26 04:31 pm UTC (link)
1) Не обязательно скрывать все. Кат скрывает только то, что после него. А если кат закрыть, то он скрывает только то, что в нем.
2) У ката есть очень полезный parameter. Пишем <lj-cut text="что угодно"> и получаем другую надпись в кате, вместо "Read more"
3) Учитывая то, что я хозяин сообщества, не следует так легкомысленно относиться к "сугубо моим личным" неудобствам, тем более, когда я считаю, что они не только мои.

(Reply to this)(Parent)(Thread)


[info]beshenov
2007-02-26 05:09 pm UTC (link)
Я знаю, как можно пользоваться lj-cut.
?
Не убедили.
А по большому счету, я и в perl спрошу, если что, если учитывать, что вы -- хозяин сообщества :-)

(Reply to this)(Parent)


[info]petdance
2007-02-26 04:28 am UTC (link)
Don't read from <STDIN>, read from <>, the magic filehandle. It reads from STDIN if a file is not specified on the command line, or from the file(s) specified on the command line if there is one. It gives your users much more flexibility.

(Reply to this)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…