Server IP : 103.119.228.120 / Your IP : 3.142.43.244 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/local/ssl/local/ssl/local/ssl/local/ssl/local/share/perl5/YAML/ |
Upload File : |
package YAML::Types; use YAML::Mo; use YAML::Node; # XXX These classes and their APIs could still use some refactoring, # but at least they work for now. #------------------------------------------------------------------------------- package YAML::Type::blessed; use YAML::Mo; # XXX sub yaml_dump { my $self = shift; my ($value) = @_; my ($class, $type) = YAML::Mo::Object->node_info($value); no strict 'refs'; my $kind = lc($type) . ':'; my $tag = ${$class . '::ClassTag'} || "!perl/$kind$class"; if ($type eq 'REF') { YAML::Node->new( {(&YAML::VALUE, ${$_[0]})}, $tag ); } elsif ($type eq 'SCALAR') { $_[1] = $$value; YAML::Node->new($_[1], $tag); } elsif ($type eq 'GLOB') { # blessed glob support is minimal, and will not round-trip # initial aim: to not cause an error return YAML::Type::glob->yaml_dump($value, $tag); } else { YAML::Node->new($value, $tag); } } #------------------------------------------------------------------------------- package YAML::Type::undef; sub yaml_dump { my $self = shift; } sub yaml_load { my $self = shift; } #------------------------------------------------------------------------------- package YAML::Type::glob; sub yaml_dump { my $self = shift; # $_[0] remains as the glob my $tag = pop @_ if 2==@_; $tag = '!perl/glob:' unless defined $tag; my $ynode = YAML::Node->new({}, $tag); for my $type (qw(PACKAGE NAME SCALAR ARRAY HASH CODE IO)) { my $value = *{$_[0]}{$type}; $value = $$value if $type eq 'SCALAR'; if (defined $value) { if ($type eq 'IO') { my @stats = qw(device inode mode links uid gid rdev size atime mtime ctime blksize blocks); undef $value; $value->{stat} = YAML::Node->new({}); if ($value->{fileno} = fileno(*{$_[0]})) { local $^W; map {$value->{stat}{shift @stats} = $_} stat(*{$_[0]}); $value->{tell} = tell(*{$_[0]}); } } $ynode->{$type} = $value; } } return $ynode; } sub yaml_load { my $self = shift; my ($node, $class, $loader) = @_; my ($name, $package); if (defined $node->{NAME}) { $name = $node->{NAME}; delete $node->{NAME}; } else { $loader->warn('YAML_LOAD_WARN_GLOB_NAME'); return undef; } if (defined $node->{PACKAGE}) { $package = $node->{PACKAGE}; delete $node->{PACKAGE}; } else { $package = 'main'; } no strict 'refs'; if (exists $node->{SCALAR}) { *{"${package}::$name"} = \$node->{SCALAR}; delete $node->{SCALAR}; } for my $elem (qw(ARRAY HASH CODE IO)) { if (exists $node->{$elem}) { if ($elem eq 'IO') { $loader->warn('YAML_LOAD_WARN_GLOB_IO'); delete $node->{IO}; next; } *{"${package}::$name"} = $node->{$elem}; delete $node->{$elem}; } } for my $elem (sort keys %$node) { $loader->warn('YAML_LOAD_WARN_BAD_GLOB_ELEM', $elem); } return *{"${package}::$name"}; } #------------------------------------------------------------------------------- package YAML::Type::code; my $dummy_warned = 0; my $default = '{ "DUMMY" }'; sub yaml_dump { my $self = shift; my $code; my ($dumpflag, $value) = @_; my ($class, $type) = YAML::Mo::Object->node_info($value); my $tag = "!perl/code"; $tag .= ":$class" if defined $class; if (not $dumpflag) { $code = $default; } else { bless $value, "CODE" if $class; eval { use B::Deparse }; return if $@; my $deparse = B::Deparse->new(); eval { local $^W = 0; $code = $deparse->coderef2text($value); }; if ($@) { warn YAML::YAML_DUMP_WARN_DEPARSE_FAILED() if $^W; $code = $default; } bless $value, $class if $class; chomp $code; $code .= "\n"; } $_[2] = $code; YAML::Node->new($_[2], $tag); } sub yaml_load { my $self = shift; my ($node, $class, $loader) = @_; if ($loader->load_code) { my $code = eval "package main; sub $node"; if ($@) { $loader->warn('YAML_LOAD_WARN_PARSE_CODE', $@); return sub {}; } else { CORE::bless $code, $class if $class; return $code; } } else { return CORE::bless sub {}, $class if $class; return sub {}; } } #------------------------------------------------------------------------------- package YAML::Type::ref; sub yaml_dump { my $self = shift; YAML::Node->new({(&YAML::VALUE, ${$_[0]})}, '!perl/ref') } sub yaml_load { my $self = shift; my ($node, $class, $loader) = @_; $loader->die('YAML_LOAD_ERR_NO_DEFAULT_VALUE', 'ptr') unless exists $node->{&YAML::VALUE}; return \$node->{&YAML::VALUE}; } #------------------------------------------------------------------------------- package YAML::Type::regexp; # XXX Be sure to handle blessed regexps (if possible) sub yaml_dump { die "YAML::Type::regexp::yaml_dump not currently implemented"; } use constant _QR_TYPES => { '' => sub { qr{$_[0]} }, x => sub { qr{$_[0]}x }, i => sub { qr{$_[0]}i }, s => sub { qr{$_[0]}s }, m => sub { qr{$_[0]}m }, ix => sub { qr{$_[0]}ix }, sx => sub { qr{$_[0]}sx }, mx => sub { qr{$_[0]}mx }, si => sub { qr{$_[0]}si }, mi => sub { qr{$_[0]}mi }, ms => sub { qr{$_[0]}sm }, six => sub { qr{$_[0]}six }, mix => sub { qr{$_[0]}mix }, msx => sub { qr{$_[0]}msx }, msi => sub { qr{$_[0]}msi }, msix => sub { qr{$_[0]}msix }, }; sub yaml_load { my $self = shift; my ($node, $class) = @_; return qr{$node} unless $node =~ /^\(\?([\^\-xism]*):(.*)\)\z/s; my ($flags, $re) = ($1, $2); $flags =~ s/-.*//; $flags =~ s/^\^//; my $sub = _QR_TYPES->{$flags} || sub { qr{$_[0]} }; my $qr = &$sub($re); bless $qr, $class if length $class; return $qr; } 1;