我有一个脚本,它采用太旧的路径名/文件(通过用户输入决定)并删除它们.我想单独列出每个目录,并要求确认删除每个目录中的旧文件.
所以,我有一个数组(@oldDirs),它包含多个数组(每个目录),它们包含字符串(完整路径名).
@oldDirs = (@AirDefense,@Arcsight,@Avocent,@BlueCoat,@Checkpoint,@Cisco,@Crossbeam,@FireE ye,@lostAndFound,@rancid,@Riverbed,@Symantec,@Wiki,@WLAN)
if($oldPathsSize != 0)
{
    my $dirNamesCounter = 0;
    my @dirNames =     ('/AirDefense','/Arcsight','/Avocent','/BlueCoat','/Checkpoint','/Cisco','Crossbeam','FireE ye','/lost+found','/rancid-2.3.8','/Riverbed','/Symantec','/Wiki','/WLAN');
    foreach my @direc (@oldDirs)
    {
        my $size = @direc;
        print "Confirm Deletion of $size Old files in $dirNames[$dirNamesC]: \n";
        $dirNamesCounter++;
        foreach my $pathname (@direc)
        {
            print "\t$pathname\n";
        }
        print "\nDelete All?(y/n): ";
        my $delete = <STDIN>;
        chomp($delete);
        if($delete eq "y")
        {
           #delete file
        }
    }
}
我的问题是第一个foreach声明.两者都是数组,并且不允许使用@direc,因为我需要在foreach的那一部分中有一个标量值......但它们都是数组!我怎么能这样做,如果可能的话?
我正在嗅探数据包,需要知道哪些数据包是 ICMPv6 Echo Request 数据包,哪些是 UDP 数据包。
我知道我能做到
P = sniff(filter='ip6 and host fe80::xx:xx:xx:xx',count=0)
IP in P  #will return false (my packets are IPv6)
UDP in P #will return true (when the specific packet is indeed UDP)
但我不知道如何检查 ICMPv6 数据包,更具体地说是 ICMPv6 Echo Request数据包......似乎我什至无法检查任何 IP 版本 6:
IPv6、IP6、ipv6、ip6、icmpv6、ICMPv6、icmp6、ICMP6 都返回一个
NameError: name 'x' is not defined
有谁知道做这样的事情的方法?
如何计算使用该数据包捕获的数据包数量
 packets = sniff(filter='udp and host fe80::xx:xx:xx:xx',count=0)
功能?这可能吗?
编辑:
我实际上一直在尝试使用这个函数的prn:
def packetCount(packets): 
    global counter 
    counter += 1 
我在程序开头定义了计数器变量.但我需要将它重置为0,每次嗅探().我尝试过的任何东西都无法工作......