#!/usr/bin/perl
use 5.016;
use warnings;

sub indx { (grep{ $_[0]->[$_] == $_[1] } (0 .. $#{$_[0]}))[0] }

sub f {
	my ($seq_a, $am, $seq_b) = @_;

	my $i = indx($seq_a, $am);

	my %index;
	@index{@{$seq_a}[$i .. $#{$seq_a}, 0 .. $i - 1]} = (0 .. $#{$seq_a});

	return [sort{ $index{$a} <=> $index{$b} } @{$seq_b}];
}

use Data::Dumper;
local $Data::Dumper::Indent = 0;
local $Data::Dumper::Terse = 1;

say Dumper f([2, 3, 5, 7, 9], 2, [9, 2, 5]);
say Dumper f([2, 3, 5, 7, 9], 9, [9, 2, 5]);
say Dumper f([2, 3, 5, 7, 9], 5, [9, 2, 5]);
say Dumper f([2, 3, 5, 7, 9], 3, [9, 2, 5, 5, 2]);
