免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4703 | 回复: 3
打印 上一主题 下一主题

Global symbol "$datenum" requires explicit package name ,How to ? [复制链接]

论坛徽章:
3
2015亚冠之阿尔希拉尔
日期:2015-08-15 16:33:2215-16赛季CBA联赛之四川
日期:2016-01-03 13:37:0515-16赛季CBA联赛之四川
日期:2016-06-13 15:53:36
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-13 11:13 |只看该作者 |倒序浏览
本帖最后由 minirain 于 2015-07-14 11:35 编辑

Global symbol "$datenum" requires explicit package name at E:\2.2c\email\NetIMAP.pl line 169.
我将如何定义变量“$datenum”???
  1. #!/usr/bin/bin/perl
  2. #use strict;
  3. #use warnings;
  4. use Net::IMAP::Client;
  5. use MIME::Base64;
  6. use MIME::QuotedPrint;
  7. #use Data::Dumper;
  8. use Encode;
  9. use Term::ReadKey;
  10. use v5.14 ;

  11. #binmode STDOUT, ':utf8';
  12. my ($k,$d,$c,$dirname ,$dir_cn,$user,$pass,$item_messages,@folders,@mailbox) ;


  13. my %months = ( Jan =>'01',
  14.                  Feb =>'02',
  15.                  Mar =>'03',
  16.                  Apr =>'04',
  17.                  May =>'05',
  18.                  Jun =>'06',
  19.                  Jul =>'07',
  20.                  Aug =>'08',
  21.                  Sep =>'09',
  22.                  Oct =>'10',
  23.                  Nov =>'11',
  24.                  Dec =>'12');
  25.                
  26.    my %weeks = ( Sun =>'(周日)',
  27.                  Mon =>'(周一)',
  28.                  Tue =>'(周二)',
  29.                  Wed =>'(周三)',
  30.                  Thu =>'(周四)',
  31.                  Fri =>'(周五)',
  32.                  Sat =>'(周六)'
  33.                  );  #'
  34.   #@folders =  ('INBOX','Sent Items','Drafts','Trash','&XfJT0ZAB-');
  35.   
  36.            
  37. print "Login:";
  38. $user = <STDIN> ;
  39. chomp $user ;
  40. print "Password:";
  41. ReadMode 2;
  42. $pass = <STDIN> ;
  43. chomp $pass ;
  44. ReadMode 0;
  45.                  
  46.      my $imap = Net::IMAP::Client->new(

  47.                  server => 'mail.cmhk.com',
  48.                  user   => $user,
  49.                  pass   => $pass,
  50.                  port   => 143        
  51.                  ) or die "Could not connect to IMAP server";

  52.          $imap->login or die('Login failed: ' . $imap->last_error);

  53.          #$user = 'xiaoyu' ;
  54.          $dirname = $user . "\'s email backup";  
  55.          mkdir "$dirname" ,0777 ;

  56.   ## get list of folders
  57.    @folders = $imap->folders;
  58.     #print "+++@folders +++" ;# get total # of messages, # of unseen messages etc. (fast!)
  59.     foreach my $folder (@folders)
  60.     {
  61.        my $status = $imap->status($folder); # hash ref!
  62.           $item_messages = $status {MESSAGES} ;
  63.             #print "$folder:$item_messages\n" ;
  64.             if ($item_messages > 0) {push @mailbox ,$folder ;}
  65.            
  66.     }
  67.         print "\n\nMailbox has messages in:" ;
  68.         my $mailboxes = join(' , ',@mailbox) ;
  69.         print "$mailboxes" ;
  70.        #    my $mailbox_name = $status {name} ;
  71.        #    print "$mailbox_name:$item_messages\n" ;
  72.       
  73.       
  74.    
  75.      foreach my $item (@mailbox)
  76.      {
  77.    
  78.         
  79.          chdir  $dirname ;
  80.          
  81.          
  82.          
  83.          if ($item eq 'INBOX') { $dir_cn = '收件箱';}
  84.          elsif ($item eq 'Sent Items') { $dir_cn = '发件箱';}
  85.          elsif ($item eq 'Drafts') { $dir_cn = '草稿箱';}
  86.          elsif ($item eq '&XfJT0ZAB-') { $dir_cn = '其它文件夹';}
  87.          elsif ($item eq 'Trash') { $dir_cn = '已删除';}
  88.          else {$dir_cn = $item ;}
  89.          
  90.          $dir_cn = encode("gbk" ,decode("utf8",$dir_cn));
  91.          mkdir "$dir_cn" ,0777 ;
  92.         # my $dir = $0;
  93.                # $dir =~ s/\w+\.\w+$//;
  94.         # chdir $dir ;
  95.          #print "\n$dirname\n" ;

  96.         # get total # of messages, # of unseen messages etc. (fast!)
  97.         #my $status = $imap->status(@folders); # hash ref!
  98.    
  99.                          # select folder
  100.           $imap->select($item);
  101.           print "\nBackup email in \'$item\':\n" ;
  102.                       # fetch all message ids (as array reference)
  103.           my $messages = $imap->search('ALL');
  104.           my $Sent_num = @$messages ;
  105.           #my $Sent_num = $item_messages;
  106.           #print "$Sent_num\n";
  107.          
  108.          
  109.           for ( $k = 0;$k < $Sent_num ;$k++)
  110.            {
  111.         
  112.              my ($uid ,$subject_cn ,$subject ,$date, $to,$from ,$cc ,$bcc,@mydate,$datanum,$filename) ;
  113.              # fetch full message
  114.              my $msg_id = $messages->[$k] ;
  115.              my   $data = $imap->get_rfc822_body($msg_id);
  116.              my   $mail_data =  $data;
  117.          
  118.                # fetch message summaries (actually, a lot more)
  119.                my $summaries = $imap->get_summaries($msg_id);
  120.                my $num_sum = @$summaries ;
  121.                #print Data::Dumper::Dumper(@$summaries[0]);
  122.                for (my $i=0,$i<$num_sum,$i++)
  123.                    {
  124.                             my $hash_sum = @$summaries[$i] ;
  125.                             $uid = @$summaries[$i]->uid ;
  126.                             $subject_cn = @$summaries[$i]->subject ;
  127.                             $subject = $hash_sum {subject} ;
  128.                             $subject =~s/\=\?(GBK|gb2312|gb18030|UTF\-8)\?(Q|B)\?(.*?)\?\=/($b = lc $1,$d = lc $2,$a=($d eq 'b')?&decode_base64($3):&decode_qp($3),$c = ($b eq 'utf-8')?&encode("gbk",  &decode("utf8", $a)):$a,$c)/ige;
  129.                             $date = @$summaries[$i]->date ;
  130.                             $to = join(', ', @{@$summaries[$i]->to});
  131.                             $from = join(', ', @{@$summaries[$i]->from});
  132.                             $cc =join(', ', @{@$summaries[$i]->cc});
  133.                    
  134.                  
  135.                             #print "<$subject>\n" ;
  136.                             #foreach my $name ( sort keys %$hash_sum )
  137.                                    #{
  138.                                 #my $value = $hash_sum {$name} ;
  139.                                       #
  140.                                       #my $temp = encode("gbk" ,decode("utf8",$value));
  141.                                       #print " $name => $value\n"  ;
  142.                                     #}
  143.                  
  144.                  
  145.                     }
  146.          
  147.                  my $temp_k = $k + 1 ;
  148.                  print "$temp_k/$Sent_num $date\n" ;
  149.                  @mydate = split (' ',$date);
  150.                  $mydate[0] =~s/\,//;$mydate[1] =  sprintf ("%.2d" ,$mydate[1]);
  151.    
  152.                  $datenum = $mydate[3] . $months{$mydate[2]} . $mydate[1] . $weeks{$mydate[0]} ;
  153.                  $datenum = encode("gbk",  decode( "utf8", $datenum  ) )  ;
  154.                  my  $num_k =  sprintf ("%04d" ,$temp_k);

  155.                  $subject =~ s/[\?\\\/\<\>\"\: \*\|]/_/g ;
  156.                  my $len_subj = length $subject ;
  157.                  if ($len_subj >=1000) { $subject = 'too long subject' ;}
  158.                  #$filename = "$dirname\\$dir_cn\\${num_k}_$datenum$subject.eml";
  159.                  $filename = "$dir_cn\\${num_k}_$datenum$subject.eml";
  160.                  next if (-e "$filename");
  161.                  open(MSGINFO,">$filename") ||  die "Couldn't open $filename for appending: $!";
  162.                  binmode MSGINFO;
  163.                  print MSGINFO $mail_data; # it's reference to a scalar
  164.          
  165.                  close (MSGINFO);
  166.            }
  167.        print "Ok!End Backup email in \'$item\'!\n" ;
  168.    
  169.    
  170.    
  171.     }
  172.    print "\nBackup email in directory:$dirname\n" ;
  173.    exit ;
  174.          

  175. 1;

复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2015-07-13 12:07 |只看该作者
回复 1# minirain

typo issue

my ($uid , ...,$datanum,$filename) ;
change to
my ($uid , ...,$datenum,$filename) ;

论坛徽章:
10
2015亚冠之广州富力
日期:2015-06-16 14:44:332015亚冠之西悉尼流浪者
日期:2015-08-19 13:14:352015亚冠之阿尔希拉尔
日期:2015-08-04 09:38:052015亚冠之萨济拖拉机
日期:2015-07-31 15:01:582015亚冠之首尔
日期:2015-07-27 14:24:312015亚冠之塔什干火车头
日期:2015-07-20 09:47:202015亚冠之布里斯班狮吼
日期:2015-07-15 14:58:432015亚冠之首尔
日期:2015-07-07 09:31:262015亚冠之广州恒大
日期:2015-07-06 15:41:272015亚冠之首尔
日期:2015-08-27 11:03:01
3 [报告]
发表于 2015-07-13 17:16 |只看该作者
按理说你的use strict;这句话已经注释掉了,不应该提示这个吧?
这个提示就是你没声明这个变量而已

论坛徽章:
3
2015亚冠之阿尔希拉尔
日期:2015-08-15 16:33:2215-16赛季CBA联赛之四川
日期:2016-01-03 13:37:0515-16赛季CBA联赛之四川
日期:2016-06-13 15:53:36
4 [报告]
发表于 2015-07-13 17:37 |只看该作者
  1. use v5.14 ;
复制代码
是强制带use strict;功能的!
xiaoxingan99 发表于 2015-07-13 17:16
按理说你的use strict;这句话已经注释掉了,不应该提示这个吧?
这个提示就是你没声明这个变量而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP