- 1
- 2
- 3
- 4
- 5
- 6
use Carp qw(carp cluck croak confess);
carp "warning";
cluck "warning with backtrace";
croak "fatal error";
confess "fatal error withbacktrace";
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−103
use Carp qw(carp cluck croak confess);
carp "warning";
cluck "warning with backtrace";
croak "fatal error";
confess "fatal error withbacktrace";
Говорящие имена функций такие говорящие придирчивые, кудахтающие, каркающие, исповедывающиеся...
−159
sub trim
{
my ($string) = @_;
for ($string)
{
s/^\s+//;
s/\s+$//;
}
return $string;
}
for ($string) такой for ($string)...
http://ideone.com/JWu2Kt
−159
if ("0 but true" == 0) {
print "Zero! ";
}
if ("0 but true") {
print "But true...";
}
The current default implementation always returns true without actually doing anything. Actually, it returns "0 but true" which is true but zero. That way you can tell if the return value is genuine or just the default.
http://ideone.com/8FzrUI
Zero! But true...
−162
С'шная либа: http://fossies.org/dox/imlib2-1.4.5/image_8c_source.html
смотрим код сохраняющий картинку:
1241 __imlib_SaveImage(ImlibImage * im, const char *file,
1242 ImlibProgressFunction progress, char progress_granularity,
1243 ImlibLoadError * er)
..........................................
..........................................
1290 *er = IMLIB_LOAD_ERROR_UNKNOWN;
1291 if (errno == EEXIST)
1292 *er = IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST;
1293 else if (errno == EISDIR)
1294 *er = IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY;
1295 else if (errno == EISDIR)
1296 *er = IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY;
1297 else if (errno == EACCES)
1298 *er = IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE;
1299 else if (errno == ENAMETOOLONG)
1300 *er = IMLIB_LOAD_ERROR_PATH_TOO_LONG;
1301 else if (errno == ENOENT)
1302 *er = IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT;
1303 else if (errno == ENOTDIR)
1304 *er = IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY;
1305 else if (errno == EFAULT)
1306 *er = IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE;
1307 else if (errno == ELOOP)
1308 *er = IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS;
1309 else if (errno == ENOMEM)
1310 *er = IMLIB_LOAD_ERROR_OUT_OF_MEMORY;
1311 else if (errno == EMFILE)
1312 *er = IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS;
1313 else if (errno == ENOSPC)
1314 *er = IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE;
1315 else if (errno == EROFS)
1316 *er = IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE;
обращаем внимание на строки *er =
в них записываются разные типы ошибок, обращаем внимаение на то, сколько типов используется
теперь берем перловую обертку: Image::Imlib2 (http://search.cpan.org/~lbrocard/Image-Imlib2-2.03/lib/Image/Imlib2.pm)
находим метод сохранения картинки, он в xs части lib/Image/Imlib2.xs
void
Imlib2_save(image, filename)
Image::Imlib2 image
char * filename
PROTOTYPE: $$
CODE:
{
Imlib_Load_Error err;
imlib_context_set_image(image);
imlib_save_image_with_error_return(filename, &err);
if (err != IMLIB_LOAD_ERROR_NONE) {
Perl_croak(aTHX_ "Image::Imlib2 save error: Unknown error");
}
}
imlib_save_image_with_error_return вызывает в конечном итоге __imlib_SaveImage из C'шной либы
обращаем внимание на то, как теперь подробно можно узнать о том, почему не удалось сохранить картинку
пример вывода такого кода в случае ошибки:
Image::Imlib2 save error: Unknown error at BL/Class/Image.pm line 608.
до тех пор, пока есть такие гении, я не беспокоюсь о своем хлебе
−158
sub get_number_from_possible_b64
{
my $s = shift;
my $rv = $s;
if( $s =~ /^\d+$/ )
{
$rv = int( $s );
} elsif( $s =~ /=$/ )
{
$rv = decode_base64( $rv );
}
return $rv;
}
Где-то есть что-то, что либо цифорка, либо строка, оканчивающаяся на знак равенства.
−167
foreach my $ex (@excluded)
{
.....
}
О чем думал, когда имя переменной давал?
−139
>> # HTML/4.01 says that line breaks are represented as "CR LF" pairs (i.e., `%0D%0A')
>> $content =~ s/(?<!%0D)%0A/%0D%0A/g if defined($content);
HTTP::Request::Common 6.04, строка 86
http://cpansearch.perl.org/src/GAAS/HTTP-Message-6.04/lib/HTTP/Request/Common.pm
Оно просто берёт и изменяет передаваемый контент. Любой. В том числе просто бинарные данные.
−119
use strict;
use warnings;
my ($i, $j) = (42, 13);
my $max = [ $i => $j ]->[ $i <= $j ];
print "max: $max\n";
Вот-так вот: http://ideone.com/2Rd3Mr
// Вроди где-то в PBP этот пример даже есть
−165
if ( $method{'out_format'} && $method{'out_format'} eq lc(q{json}) ) {
Yo dawg, we heard that you like lowercase, so we put some lowercase into your lowercase
−172
sub company_stuff_add_array_elems
{
my $list = shift;
my $count = 0;
foreach ( @$list )
{
$count += $_;
}
return $count;
}
List::Util::sum
http://perldoc.perl.org/List/Util.html