53 bytes plus three for the flags: perl -lpF script.pl
$"='';/#+/;{unshift@F,pop@F;++$i<"$$'"&&redo}$_="@F"  I stole the concatenate(input,input) trick from other answers here. Explanation: • -lpF reads the input, removes the trailing newline, splits up the remainder into characters, and puts that split into the array @F. • $"='' makes sure that when we stringify an array it has no spaces in it.
• /#+/ finds #s in the input string and sets $ equal to the stuff before it and $' equal to the stuff after it. $'$ is thus the number of times to rotate the array.
• Now comes a loop: We increment $i (which starts at 0) and test against $'$ (the number of times to rotate); if we haven't reached $'$ yet, we redo the loop. What does the loop do? Simple: it rotates the array (pops the last element and unshifts it onto the beginning). • After the loop exits, we assign the stringified shifted loop to $_ so that -p` prints it.