use strict; use warnings; use feature 'say'; use Math::GSL qw/ :all /; use Math::GSL::Permutation qw/ :all /; { my $p = gsl_permutation_calloc( 5 ); say join '', map { gsl_permutation_get( $p, $_ )} 0 .. 4; gsl_permutation_next( $p ); say join '', map { gsl_permutation_get( $p, $_ )} 0 .. 4; my $f = gsl_fopen( 'gsl_test', 'w' ); gsl_permutation_fwrite( $f, $p ); gsl_fclose( $f ); gsl_permutation_free( $p ); } say "\n...and next day..\n"; { my $p = gsl_permutation_calloc( 5 ); my $f = gsl_fopen( 'gsl_test', 'r' ); gsl_permutation_fread( $f, $p ); gsl_fclose( $f ); say join '', map { gsl_permutation_get( $p, $_ )} 0 .. 4; # one repeat from yesterday gsl_permutation_next( $p ); say join '', map { gsl_permutation_get( $p, $_ )} 0 .. 4; # etc... gsl_permutation_free( $p ); } __END__ 01234 01243 ...and next day.. 01243 01324