The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl
#
# This is an example on how to write a file that uses other rule files
# and "merges" its results into a single rule list.
#
# Copyright © 2009, Luis E. Muñoz - All Rights Reserved
#
# $Id: complex-rule.pl 109 2009-10-17 22:00:16Z lem $

use strict;
use warnings;

# Place here the list of files you want to read in, in the required
# order

my @files = (
	     'traffic-delta.pl', # Traffic sampling
	     'session-cache.pl', # Individual sessions per port
	     'def-rule.pl'	 # Default rule treatment
	     );

# Rules will be sent here
my @rules = ();

for my $file (@files)
{
    unless (-f $file)
    {
	warn "*** Failed to load $file: $!\n";
	next;
    }

    my $rule = undef;
    eval { $rule = do($file); };
    unless (ref($rule) eq 'ARRAY')
    {
	warn "$file did not return an arrayref, but ", 
	$rule // 'undef', "\n";
	warn "Eval: $@\n" if $@;
	next;
    }

    warn "$file returned ", scalar(@$rule), " rules\n";
    push @rules, @$rule;
}

return \@rules;